Skip to main content
Glama

The wiki that writes itself — from the code you already ship.

Sign up free   Tour the site   Self-host it

Home · Pricing · Compare · MCP for agents · Docs

License: AGPL-3.0 GitHub stars Latest release Docker npm tela-mcp

tela is a self-hostable, markdown-native team wiki built for a world where agents are first-class authors and readers. It pairs a Go + PostgreSQL backend with a React 19 / Milkdown editor, live Yjs collaboration, ranked full-text and semantic search, and a built-in Model Context Protocol (MCP) server — so the same knowledge base your team edits in the browser is one your agents can search, read, and write directly. Atlas, its documentation engine, turns the artifacts you already produce into maintained wiki pages. Your content stays canonical markdown forever — pages.body is markdown, there is no proprietary block store.

👉 Start at telawiki.com — the marketing site walks through what tela does (with pricing, a comparison, and the agent/MCP story), and the hosted instance has a free tier: no install, no card.

Why tela

  • Atlas auto-doc-gen — point Atlas at your sources and it drafts and maintains real wiki pages, so docs track what you ship instead of rotting.

  • Built-in MCP server/api/mcp is part of the backend, not a bolt-on. Claude, Cursor, and other agents search, read, and author pages with scoped, per-tool write permissions.

  • Semantic + full-text search — ranked PostgreSQL FTS works out of the box; add an embedder for pgvector-backed semantic retrieval and grounded "ask your docs" answers.

  • Live collaboration — real-time multi-cursor editing over Yjs in a Milkdown editor, with comments, backlinks, and revision history.

  • Teams that run themselves — users create orgs and invite teammates by email, no admin ticket. Flip a space to public and it becomes a login-free blog surface with per-author home pages.

  • Self-host & own your markdownpages.body is canonical markdown forever (no block table). Sync over WebDAV, export to zip/PDF, and run the whole stack with one make up.

Related MCP server: basic-memory

Quickstart

You need Docker (with Compose) and make. The bundled stack builds every image via Compose, so no host Node or Go toolchain is required.

git clone https://github.com/zcag/tela.git
cd tela

# 1. Write deploy/.env from the example with strong generated secrets
#    (fills TELA_API_KEY_SECRET, TELA_SHARE_SECRET, TELA_PG_PASSWORD via openssl rand)
make setup

# 2. Edit deploy/.env — set TELA_PUBLIC_BASE_URL, and optionally
#    TELA_ADMIN_* and TELA_SMTP_* (see Configuration below)

# 3. Build and start the full stack
make up

The stack comes up behind Caddy on http://localhost:8780. On first boot tela runs its embedded migrations automatically and lands you on the /setup wizard to create the first admin — unless you set TELA_ADMIN_PASSWORD in deploy/.env, which bootstraps the admin non-interactively.

One-click cloud deploy

Prefer managed hosting over running Compose? Deploy the published multi-arch images straight to a platform:

Deploy to Render   Deploy to DigitalOcean

After the first deploy, enable pgvector on the managed database once — CREATE EXTENSION IF NOT EXISTS vector; — then point the backend's TELA_PUBLIC_BASE_URL at your app's public URL. Or skip ops entirely with the free cloud tier.

Common targets:

make up         # build + start the stack on :8780 (auto-stamps git version/commit)
make down       # stop the stack
make logs       # tail logs from all services
make backup     # dump Postgres to ./backups/tela-<timestamp>.sql
make restore FILE=backups/tela-....sql
make clean FORCE=1   # stop and DELETE all volumes (destroys data)

make up is the same thing as running Compose directly — under the hood it's docker compose -f deploy/docker-compose.yml up -d --build (plus a forced proxy recreate so a changed Caddyfile re-mounts). The three load-bearing secrets must be set and stable across deploys: rotating TELA_SHARE_SECRET invalidates outstanding share cookies, and rotating TELA_API_KEY_SECRET invalidates every existing personal access token (PAT).

For full setup, TLS, backups, and upgrades see docs/self-hosting.md and the operations runbook docs/operations.md.

Local development

make dev        # backend (:8080) + frontend (:5173, proxies /api → :8080); boots a local dev Postgres
make be-dev     # backend only (go run; boots the dev Postgres on :55433)
make fe-dev     # frontend only (vite)
make test       # backend tests against a throwaway Postgres
make storybook  # component dev surface

If :8080 is taken on your box, run make dev DEV_BE_PORT=18080 so the backend and the vite /api proxy stay consistent.

Optional: semantic search out of the box

The bundled Compose stack ships an optional Ollama embedder behind a profile. Full-text search always works; this only lights up the semantic half:

docker compose -f deploy/docker-compose.yml --profile embed up -d
docker compose -f deploy/docker-compose.yml exec ollama ollama pull qwen3-embedding:0.6b
# then set TELA_RAG_EMBED_URL=http://ollama:11434 in deploy/.env and restart

Configuration

All configuration is environment-driven via deploy/.env (copy from deploy/.env.example). In the bundled Compose stack TELA_DATABASE_URL is auto-constructed from the TELA_PG_* vars — you only set it explicitly when running the backend against an external Postgres.

Required

Variable

Description

TELA_PUBLIC_BASE_URL

Public origin of the instance (e.g. https://wiki.example.com). Used in emails, share links, and OAuth audiences.

TELA_SHARE_SECRET

Secret signing share-link password cookies. Generate with openssl rand -hex 32; never rotate (invalidates outstanding share cookies).

TELA_API_KEY_SECRET

Secret signing personal access tokens (PATs). Generate with openssl rand -hex 32; never rotate (invalidates every existing PAT).

TELA_PG_PASSWORD

Password for the bundled Postgres. No default — must be set.

Postgres

Variable

Description

TELA_PG_USER

Postgres role for the bundled DB. Default tela.

TELA_PG_DB

Postgres database name. Default tela.

TELA_DATABASE_URL

Full DSN — only set when running outside the bundled stack (external/managed Postgres). Format postgres://USER:PASS@HOST:5432/DB?sslmode=disable.

Bootstrap admin (optional)

Variable

Description

TELA_ADMIN_USERNAME

Bootstrap admin username (first boot only).

TELA_ADMIN_PASSWORD

Bootstrap admin password. Unset → use the /setup web wizard instead.

TELA_ADMIN_EMAIL

Optional; pre-confirms the admin's email so it's exempt from the confirmation gate. Setting it later backfills the existing admin.

Email (transactional + notifications)

With TELA_SMTP_HOST unset, tela logs confirmation/reset/notification links to stdout instead of sending (fine for dev / first boot). Works with any SMTP relay.

Variable

Description

TELA_SMTP_HOST

SMTP relay host (e.g. smtp.resend.com).

TELA_SMTP_PORT

587 starttls (default) or 465 ssl.

TELA_SMTP_TLS

starttls | ssl | none.

TELA_SMTP_USERNAME

SMTP username.

TELA_SMTP_PASSWORD

SMTP password or API key.

TELA_SMTP_FROM

From identity, e.g. tela <tela@example.com>.

Custom domains & TLS (optional)

Variable

Description

TELA_SITE_ADDRESS

Canonical host Caddy binds for direct-TLS mode (e.g. telawiki.com). Empty → :80 (terminator/CF mode), which disables org custom domains.

TELA_CUSTOM_DOMAIN_TARGET

Shared CNAME target shown to org admins adding a hostname. Defaults to the canonical host.

AI: semantic retrieval, ask-your-docs, Atlas (all optional, ship dark)

These features ship dark — unset means the relevant endpoints return 503 and nothing is computed. Point them at your own Ollama / OpenAI-compatible endpoints, the bundled --profile embed Ollama, or tela cloud's managed endpoints (authenticated with a telawiki.com PAT).

Variable

Description

TELA_RAG_EMBED_URL

Embedder endpoint for semantic chunk search (e.g. http://ollama:11434). Unset → /api/rag/* 503.

TELA_RAG_EMBED_MODEL

Embedding model. Must be 1024-d; default qwen3-embedding:0.6b.

TELA_RAG_EMBED_DIM

Advisory embedding dimension (the column is fixed at vector(1024)).

TELA_RAG_EMBED_TOKEN

Bearer token for a managed/authenticated embed endpoint.

TELA_RAG_QUERY_INSTRUCT

Query-side instruction prefix for asymmetric retrieval. Unset → sensible default.

TELA_RAG_RERANK_URL

Optional cross-encoder reranker /rerank endpoint (Cohere/Jina/TEI-compatible).

TELA_RAG_RERANK_MODEL / TELA_RAG_RERANK_TOKEN

Reranker model name and token.

TELA_RAG_LOG_ASKS

Log "ask your docs" questions to surface knowledge gaps (admin-only). 0 disables.

TELA_LLM_URL

OpenAI-compatible chat base including /v1 for grounded answers (/api/rag/ask). Unset → 503.

TELA_LLM_MODEL

Chat model name (e.g. qwen2.5:7b).

TELA_LLM_TOKEN

Bearer token for a managed/authenticated LLM endpoint.

TELA_LLM_MAX_TOKENS

Completion length cap. Default 1024; 0/-1 disables the cap.

TELA_AGREEMENT

Epistemic trust pass (corroborate/contradict scoring). On when LLM+embedder are set; 0 disables.

TELA_ATLAS_MAX_CONCURRENT_RUNS

Cap on concurrent Atlas doc-gen runs. Default 1.

ATLAS_LLM_CONCURRENCY

Per-run client concurrency gate. Default 6.

TELA_ATLAS_WORKDIR

Where Atlas unpacks working files. Default: OS temp dir.

TELA_IMAGE_GEN_URL / TELA_IMAGE_GEN_MODEL / TELA_IMAGE_GEN_KEY

OpenAI-compatible Images endpoint for the MCP generate_deck_image tool. Unset → 503.

Auth: MCP OAuth & federated sign-in (optional)

Variable

Description

TELA_WORKOS_ISSUER

WorkOS AuthKit issuer to enable Claude.ai/ChatGPT "Connect" OAuth on /api/mcp. Unset → MCP stays PAT-only.

TELA_MCP_RESOURCE

The MCP endpoint's public URL (OAuth audience). Defaults to {TELA_PUBLIC_BASE_URL}/api/mcp.

WORKOS_API_KEY

Server-side WorkOS secret for the Standalone login bridge.

TELA_SSO_GOOGLE_CLIENT_ID / _SECRET

Google OIDC sign-in. Dark until both are set.

TELA_SSO_MICROSOFT_CLIENT_ID / _SECRET

Microsoft OIDC sign-in. Dark until both are set.

TELA_SSO_GITHUB_CLIENT_ID / _SECRET

GitHub OAuth2 sign-in. Dark until both are set.

Billing (optional, ships dark)

Variable

Description

TELA_POLAR_TOKEN

Polar organization access token. Unset → checkout/portal 503; plans stay operator-assigned.

TELA_POLAR_WEBHOOK_SECRET

Polar webhook signing secret (verbatim).

TELA_POLAR_BASE_URL

https://api.polar.sh or https://sandbox-api.polar.sh.

TELA_POLAR_PRODUCTS

Maps plan keys to Polar product UUIDs, e.g. personal_plus:<uuid>,org_team:<uuid>.

Services, sync & ops (optional)

Variable

Description

TELA_GOTENBERG_URL

PDF render engine. Default http://gotenberg:3000.

TELA_PDF_RENDER_BASE_URL

Internal origin Gotenberg's Chromium loads the reader from. Default http://proxy.

TELA_DECK_URL

Slidev deck render sidecar. Default http://deck:3344.

TELA_WEBDAV_ENABLED

WebDAV sync surface (/dav/). Default on; 0/false disables.

TELA_WEBDAV_CREATE_SPACES

Allow root-level MKCOL to mint spaces. Default on (any write-scoped PAT can create spaces via WebDAV).

TELA_WEBDAV_DELETE_FLOOR / TELA_WEBDAV_DELETE_FRACTION

Mass-delete guard tuning.

TELA_WEBDAV_FILE_MAX_BYTES

Per-file upload cap for space files.

TELA_ADDR

Backend listen address. Default :8080.

TELA_LOG_FORMAT

json for structured logs. Default text.

TELA_API_KEY_AUDIT_DAYS

PAT audit-log retention in days.

TELA_EVENTS_RETENTION_DAYS

Activity-feed GC window. Default 180.

TELA_DISABLE_WELCOME_SEED

Any value skips seeding the welcome space on first boot.

TELA_VERSION / TELA_COMMIT

Build metadata surfaced by GET /api/version (auto-stamped by make).

The split/deploy topology adds image-ref and Umami-analytics vars (TELA_BACKEND_IMAGE, TELA_FRONTEND_IMAGE, UMAMI_APP_SECRET, UMAMI_DB_PASSWORD, …). See deploy/.env.example and docs/deploy.md.

Connect your agents (MCP)

tela's MCP server is built into the backend at /api/mcp — it self-authenticates with a personal access token (PAT) as a bearer header. Modern hosts speak HTTP transport directly:

https://telawiki.com/api/mcp            # tela cloud
https://your-host.example.com/api/mcp   # your self-hosted origin

For hosts that can't speak HTTP transport (or want a stdio bridge), the tela-mcp npm package is a thin stdio↔HTTP proxy to the same endpoint — no second tool implementation to drift. Add it to your MCP client config (e.g. Claude Desktop / Cursor):

{
  "mcpServers": {
    "tela": {
      "command": "npx",
      "args": ["-y", "tela-mcp"],
      "env": {
        "TELA_BASE_URL": "https://telawiki.com",
        "TELA_API_KEY": "tela_pat_xxxxxxxx"
      }
    }
  }
}

Point TELA_BASE_URL at your own origin to use a self-hosted instance. Generate a PAT in Settings → API tokens; per-tool write permission is enforced server-side. The proxy requires Node ≥ 20. See mcp/README.md for the full tool catalog and troubleshooting.

One-click install

Add to Cursor Add to VS Code

Both buttons add the HTTP endpoint; auth is handled by OAuth on first use, so no token goes in the link.

Per-client setup

HTTP-transport hosts connect to the endpoint directly and sign in via OAuth. stdio-only hosts use the tela-mcp proxy with a PAT (TELA_BASE_URL + TELA_API_KEY).

Claude Code (CLI, HTTP):

claude mcp add --transport http tela https://telawiki.com/api/mcp

Cursor (HTTP) — use the button above, or add to ~/.cursor/mcp.json:

{ "mcpServers": { "tela": { "url": "https://telawiki.com/api/mcp" } } }

VS Code (HTTP) — use the button above, or:

code --add-mcp '{"name":"tela","type":"http","url":"https://telawiki.com/api/mcp"}'

ChatGPT — install Tela from the plugin directory and sign in. Nothing to paste, no Developer Mode. (The directory plugin talks to the hosted service; for a self-hosted instance add a custom connector with your own URL, as below.)

Claude.ai / self-hosted ChatGPT (OAuth connector) — add a custom connector and paste the URL; complete the sign-in:

https://telawiki.com/api/mcp

Claude Desktop (stdio proxy) — claude_desktop_config.json:

{
  "mcpServers": {
    "tela": {
      "command": "npx",
      "args": ["-y", "tela-mcp"],
      "env": { "TELA_BASE_URL": "https://telawiki.com", "TELA_API_KEY": "tela_pat_xxxxxxxx" }
    }
  }
}

Windsurf (stdio proxy) — ~/.codeium/windsurf/mcp_config.json, same mcpServers shape as Claude Desktop above.

Codex (stdio proxy) — ~/.codex/config.toml:

[mcp_servers.tela]
command = "npx"
args = ["-y", "tela-mcp"]
env = { TELA_BASE_URL = "https://telawiki.com", TELA_API_KEY = "tela_pat_xxxxxxxx" }

A machine-discovery manifest is published at /.well-known/mcp.json.

Screenshots

Ranked full-text search across every space you can read, with the matching line in context:

Atlas documents a repo and then audits its own coverage — 6/6 must-cover surfaces documented, 42 citations, and the exact file:line gaps it hasn't covered:

Atlas coverage audit: 13/19 surface covered, 6/6 must-cover documented, 42 citations with 0 unresolved, and a list of undocumented exports with their file:line locations

Architecture

  • Backend — Go (module github.com/zcag/tela/backend, entry cmd/tela). Hand-written database/sql over the pgx/v5 stdlib driver — no ORM, no sqlc. Embedded, forward-only SQL migrations run automatically on boot.

  • Database — PostgreSQL 17 with the pgvector extension (pgvector/pgvector:pg17). FTS lives in pages.search_tsv (ranked ts_rank_cd); semantic chunks live in page_chunks.embedding vector(1024).

  • Frontend — React 19 + Vite + TypeScript + Tailwind v4 + Radix + a Milkdown (@milkdown/kit) editor, with TanStack Query/Router, Orama, cmdk, and Storybook. Owned, token-driven UI components only.

  • Live collaboration — Yjs + y-prosemirror over a custom WebSocket transport, scoped tightly to src/lib/collab/* and the collab branch of the editor; it rebases onto the canonical markdown on save.

  • Built-in MCP — the tool/resource surface lives in the Go backend (internal/api/mcp*.go) and calls the same core functions the REST routes do, so there is one implementation. mcp/ is a dumb stdio↔HTTP pipe published as tela-mcp on npm.

  • Atlas — the documentation engine that drafts and maintains wiki pages from your sources, sharing the configured LLM endpoint.

  • Render sidecars — Gotenberg for HTML→PDF export; a Slidev deck sidecar for presentation pages.

  • Edge — Caddy serves the SPA, the API, the marketing landing at the apex, and (in direct-TLS mode) on-demand certificates for org custom domains.

Deeper internals, ops, and gotchas live in docs/ — start with docs/architecture.md, and docs/decisions.md for the rationale (PostgreSQL, custom collab transport, MCP-as-thin-client).

Self-host vs cloud

  • Self-host — run the whole stack with make up (or docker compose). You own the data, the markdown, and the Postgres volume; AI features are bring-your-own-endpoint (or the bundled Ollama profile). The split/registry deploy topology for shared-edge boxes is in docs/deploy.md.

  • Cloud — a managed instance is hosted at telawiki.com with a free tier, plus optional managed semantic search and ask-your-docs so you don't have to run an embedder or LLM yourself.

Both run the same code from this repository.

Contributing

  • Commit format: type(scope): summary (e.g. feat(backend): hybrid chunk search). Concise messages, no co-author trailer.

  • No issue/task tracker — please don't open GitHub issues or reference #NNN. Discuss via pull requests.

  • Backend changes use hand-written SQL and a new forward-only NNNN_name.sql migration (never edit an applied one). Frontend changes use owned Radix/token-based primitives — no hardcoded hex/px, no third-party component kits.

  • Run make test (backend) and npm run build in frontend/ before sending a change. See CLAUDE.md and docs/ for the full conventions.

Security

Please report security issues privately to tela@telawiki.com. Do not open a public issue or PR for a vulnerability. Note that a missing or rotated TELA_API_KEY_SECRET / TELA_SHARE_SECRET leads to forgeable tokens — keep them set and stable.

License

tela is open core. Copyright © tela contributors. The Community core — the whole product — is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0): self-host, modify, and redistribute under its terms (run a modified version as a network service and you must offer your users the corresponding source). The tela-mcp npm package is published under AGPL-3.0-only. For a commercial license without AGPL obligations (e.g. to embed or offer tela as a closed service), contact the maintainer.

The Enterprise Edition (backend/internal/ee/, source-available, not AGPL) adds the company-of-record layer (SSO, audit, SCIM, governance) and requires a license key for production use — see backend/internal/ee/LICENSE.md. Full structure in docs/licensing.md.

"tela", the tela name, and the tela logo are trademarks and are not licensed under the AGPL — see TRADEMARK.md. You may run and fork the code, but you may not use the tela branding for a redistributed or hosted version without permission.

Available Tools

41 tools
add_commentAdd commentAInspect

Attach a root (non-reply) comment to a page, anchored to a specific passage by a {prefix, exact, suffix} text triplet so it stays pinned to the right spot as the page changes (editor+). Pass idempotency_key to make retries safe (a repeat returns the original comment instead of posting a duplicate). Use for feedback ON page content; to report problems with tela itself use submit_feedback.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYescomment text (1-10000 chars)
anchorYestext-quote anchor locating the comment in the body
page_idYespage to comment on
idempotency_keyNooptional client-generated key; a retry with the same key returns the original result instead of posting a duplicate comment (safe retries after a dropped connection)

Output Schema

ParametersJSON Schema
NameRequiredDescription
commentYes

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses that comments are root (non-reply) and anchored by a text triplet to stay pinned. It explains idempotency behavior: retries return original comment. Annotations are consistent (readOnlyHint=false, destructiveHint=false). No contradictions.

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?

Two efficient sentences: first covers the action, anchoring, and idempotency; second provides usage guidance. Every sentence adds unique value with no 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?

Given the tool's complexity (nested anchor object, optional idempotency key, output schema exists), the description covers anchoring mechanics, idempotency, and usage context. Output is covered by output schema, so no gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the anchor triplet purpose and idempotency key behavior, going beyond schema descriptions. It also notes the comment is a root comment.

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 clearly states the tool attaches a root (non-reply) comment to a page with a specific anchoring mechanism. It explicitly distinguishes itself from the sibling tool 'submit_feedback', leaving no ambiguity about its purpose.

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 provides explicit usage guidelines: use for feedback on page content, and redirects users to 'submit_feedback' for reporting problems with tela itself. It also explains when to use the idempotency_key for retries.

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

atlas_list_projectsList atlas projectsA
Read-only
Inspect

List the atlas doc-generation projects you can see (your personal ones plus those of every org you belong to). Each project carries its owner, output space, schedule, source count, and latest-run summary (status + last must-cover rate); can_manage says whether you may trigger runs. Start here to find a project_id for atlas_run, or to read coverage health at a glance.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
projectsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, so the description adds value by detailing the scope (personal plus org projects) and the can_manage flag indicating permission to trigger runs. No contradictions. Slight deduction for not mentioning any rate limits or pagination (but output schema likely covers that).

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?

Two sentences, no wasted words. First sentence states purpose and scope; second adds detail and use case. Perfectly front-loaded and efficient.

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?

The description is complete for a simple list tool with zero parameters and an output schema. It covers what the tool returns, who can see what, and a key use case. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Input schema has zero parameters and schema coverage is 100%, so the description has no burden to add parameter info. Baseline 4 for zero parameters applies.

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 starts with 'List the atlas doc-generation projects you can see', which is a specific verb+resource+scope. It enumerates the fields returned (owner, output space, schedule, source count, latest-run summary, can_manage) and a clear use case (find project_id for atlas_run, read coverage health). This distinguishes it from siblings like atlas_run.

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?

The description explicitly says 'Start here to find a project_id for atlas_run, or to read coverage health at a glance', providing clear when-to-use guidance. It doesn't explicitly state when not to use, but the context is sufficient given the sibling tools.

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

atlas_runRun atlas generationAInspect

Trigger a FULL doc-generation run for every source in an atlas project (project_id from atlas_list_projects): re-ingest the sources, regenerate the cited pages, and re-audit coverage. Management-level (project owner / org admin) — a run fetches the sources, spends LLM budget, and rewrites the generated subtree (creating the output space on the first run). Returns run_ids (one per source); poll each with atlas_run_status. Returns 503 ai_unavailable when the instance has no embedder/LLM configured.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesid of the atlas project to generate docs for (from atlas_list_projects)

Output Schema

ParametersJSON Schema
NameRequiredDescription
run_idsYes

TDQS

A4.5/5.0
Behavior4/5

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

Discloses key behaviors: fetches sources, spends LLM budget, rewrites generated subtree, creates output space on first run, returns run_ids and 503 error. Adds value beyond annotations which only indicate non-destructive and non-read-only.

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?

Concise, front-loaded with purpose, and every sentence adds value—no redundancy or fluff.

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 presence of output schema, description sufficiently covers return values (run_ids) and error conditions (503 ai_unavailable), along with permissions and side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema covers project_id with description, and the description reinforces where to obtain it ('from atlas_list_projects'), aiding in parameter selection and reducing ambiguity.

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?

Description clearly states it triggers a full doc-generation run for all sources in an atlas project. Specific verb 'trigger', resource 'atlas project', and differentiates from sibling tools like atlas_run_status and atlas_list_projects.

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?

Explicitly states management-level access requirement (project owner/org admin), mentions spending LLM budget, and explains the 503 error condition. Lacks explicit when-not-to-use guidance but provides strong context for appropriate use.

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

atlas_run_statusGet atlas run statusA
Read-only
Inspect

Read an atlas run's status and coverage by run_id (view+). Returns the run's status + current stage and, once auditing has run, coverage (must_rate = the headline fraction of must-cover surface documented, surface_rate, gap_count + the gap list of undocumented surface items) and stats (files / surface / chunks / pages). Use to follow a run started by atlas_run to completion and judge whether the docs are complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesid of the run to read (from atlas_run)

Output Schema

ParametersJSON Schema
NameRequiredDescription
runYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, so the agent knows it is a safe read operation. The description adds behavioral context by detailing the return values (status, stage, coverage, stats) and their semantics, which goes beyond the annotations.

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?

The description is concise (about 50 words) and front-loaded with the purpose. Each sentence adds value: purpose, return details, and usage guidance. No redundant information.

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?

The description fully explains the output including status, stage, coverage metrics (must_rate, surface_rate, gap_count, gap list), and stats (files, surface, chunks, pages). It also provides usage context. With an output schema present, the description covers all necessary details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

The input schema has only one parameter (run_id) with 100% description coverage, so the schema already explains it. The description mentions 'run_id (view+)', which might hint at required permissions, but does not add significant meaning beyond the schema. Baseline 3 is appropriate.

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 clearly states the tool reads an atlas run's status and coverage by run_id, specifying the verb ('read') and resource ('atlas run status'). It distinguishes from the sibling 'atlas_run' which starts the run, and details the output.

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 states when to use: 'Use to follow a run started by atlas_run to completion and judge whether the docs are complete.' This provides clear context and implies not to use it before starting a run, with 'atlas_run' as the complementary tool.

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

confirm_attachment_uploadConfirm a direct uploadA
Idempotent
Inspect

After the bytes have been PUT to a request_attachment_upload URL, return the stored file's serve URL + ready-to-embed markdown (for hosts that couldn't read the PUT response). Editor+. Then place the snippet with update_page/patch_page.

ParametersJSON Schema
NameRequiredDescriptionDefault
upload_idYesthe upload_id from request_attachment_upload

Output Schema

ParametersJSON Schema
NameRequiredDescription
attachmentYes

TDQS

A4/5.0
Behavior3/5

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

Annotations indicate idempotentHint=true and destructiveHint=false, providing safety info. The description adds context about return value and workflow but doesn't elaborate on auth beyond 'Editor+' or potential side effects.

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?

Two sentences efficiently convey key information: action, output, prerequisite, permission, and next steps. No excess or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with output schema, the description covers workflow, permission, and integration hints. Minor gap: no mention of error if upload_id is invalid or PUT incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100% with a clear description for upload_id linking it to request_attachment_upload. The description doesn't add further parameter details, so baseline score applies.

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 clearly states the tool returns the serve URL and markdown for a confirmed upload, distinguishing it from the sibling request_attachment_upload which initiates the upload.

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?

Explicitly states the prerequisite of using request_attachment_upload and PUTting bytes before calling this tool, and advises subsequent use of update_page/patch_page. However, it does not contrast with alternatives like upload_attachment.

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

create_pageCreate pageAInspect

Create a page in a space (editor+). Body is markdown; tela://page/{id} links and [[Page Title]] wikilinks (resolved by title within the space) are indexed as backlinks. tela renders a rich block palette beyond plain markdown — to-do list, pull quote, callout, collapsible, tabs, kanban board, stat grid, timeline, calendar, poll, chart, embed, mermaid diagram, image, file attachment, code block, equation, inline math, table, highlight, wikilink, footnote. Prefer these over walls of text; read the tela://authoring-guide resource (or this server's instructions) for exact syntax. When asked for a presentation, slides, a slide deck, or a talk (any phrasing) — not a prose doc — set the page property deck=true (and optionally variant=) and write the body as slides separated by --- using the tahta layouts; call the deck_authoring_guide tool (or read the tela://deck-authoring-guide resource) for the layouts, fields, components, and variants. When asked for a spreadsheet, a table of data with formulas/totals, a budget, a tracker, or any grid that computes — not a prose doc — set the page property sheet=true and write the body as Defter markdown (compact GFM tables + an optional ```defter-style block); call the sheet_authoring_guide tool (or read the tela://sheet-authoring-guide resource) for the format, formulas, and styling.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesmarkdown body
propsNooptional page properties (frontmatter); free-form keys, reserved keys like id/title/slug/created are ignored
titleYespage title
space_idYesid of the space to create the page in
parent_idNooptional parent page id
idempotency_keyNooptional client-generated key; a retry with the same key returns the original result instead of creating a duplicate page (safe retries after a dropped connection)

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already indicate a write operation (readOnlyHint=false) with no destruction (destructiveHint=false). The description adds significant behavioral context: backlinks are indexed for tela:// links and wikilinks, tela renders a rich block palette beyond plain markdown, and special content types (decks, sheets) require different body format and properties. This goes well beyond what annotations provide.

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 description is well-structured and front-loaded with the core purpose, then details. It is somewhat lengthy due to rich block palette enumeration and special case instructions, but every sentence earns its place. Minor conciseness improvements could be made, but overall effective.

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 tool's complexity (6 parameters, special content types, backlink indexing) and existence of an output schema, the description is thorough. It explains the body format, links, rich blocks, deck/sheet conventions, and directs to additional guides. No gaps are apparent for the agent to misuse the tool.

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 coverage is 100%, baseline 3. The description adds substantial meaning: body is markdown with special link types, and for decks/sheets the body format and props must be set differently; props have reserved keys; idempotency_key enables safe retries. These details greatly enhance understanding beyond the schema descriptions.

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 explicitly states 'Create a page in a space (editor+).' It clearly distinguishes from sibling tools like update_page, patch_page, delete_page, and from deck/sheet authoring guides. The verb 'create' with resource 'page' is specific and unambiguous.

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 provides explicit guidance: when to use this tool (to create a page), and when not (for presentations/decks or spreadsheets, directing to deck_authoring_guide and sheet_authoring_guide). It also instructs to prefer rich blocks and read the authoring guide for syntax. This is exemplary usage differentiation.

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

create_spaceCreate spaceAInspect

Create a space; the caller becomes its owner (write scope). slug is derived from name when omitted. Use to start a new top-level container of pages; to add a page inside an existing space use create_page, and to rename a space use update_space.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesspace name (1-200 chars)
slugNooptional url slug; derived from name when omitted
org_idNooptional org id to own the space (caller must be a member); omit for a personal space
idempotency_keyNooptional client-generated key; a retry with the same key returns the original result instead of creating a duplicate space (safe retries after a dropped connection)

Output Schema

ParametersJSON Schema
NameRequiredDescription
spaceYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnly=false and destructiveHint=false, indicating a write operation that is not destructive. The description adds the caller becoming owner, which is beyond annotations. However, it does not mention any other side effects or authorization requirements, so it is not fully exhaustive.

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?

Three sentences, front-loaded with purpose. No unnecessary words. Every sentence adds value: purpose, ownership, slug behavior, and usage compared to siblings.

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?

With an output schema present, the description does not need to explain return values. It covers creation behavior, ownership, and clearly distinguishes from related tools. Given the tool's complexity and schema richness, the description is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100% with detailed parameter descriptions. The description adds context about slug derivation ('slug is derived from name when omitted'), which reinforces the schema but provides minimal extra value. Baseline 3 is appropriate.

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 clearly states 'Create a space' with a specific verb and resource. It distinguishes itself from siblings by mentioning create_page (adds page inside existing space) and update_space (renames), ensuring no confusion with other space-related tools.

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?

Explicitly provides usage context: 'Use to start a new top-level container of pages' and lists alternatives (create_page for adding pages, update_space for renaming). This gives clear when-to-use and when-not-to-use guidance.

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

deck_authoring_guideDeck authoring guideA
Read-only
Inspect

Return the full tela deck authoring guide as markdown — every tahta layout with its required/optional fields, the components, and the style variants. Read this FIRST when creating or editing a deck (a deck=true page) so you don't guess at layouts/fields. The guide lists optional capability modules (e.g. branding, imagery); when one applies, call again with module="" to fetch that extra guidance.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleNoOptional capability module id (e.g. branding, imagery) to fetch instead of the core guide.

Output Schema

ParametersJSON Schema
NameRequiredDescription
guideYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint. Description adds that it returns markdown, lists content types, and describes module usage, providing behavioral context beyond annotations.

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?

Three concise sentences with no fluff. Front-loaded with core purpose, followed by usage guidance and module explanation.

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 simple tool (one optional parameter, annotations, output schema), the description covers purpose, usage, and parameter behavior fully. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema coverage is 100%. Description reinforces the parameter's purpose and adds usage context ('when one applies, call again with module="<id>"'), enhancing meaning beyond the schema alone.

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?

Description states 'Return the full tela deck authoring guide as markdown' specifying the resource and action, and distinguishes from siblings by advising 'Read this FIRST' when creating or editing a deck.

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?

Explicitly says to read this first when creating or editing a deck, avoiding guesswork. Also explains how to use the module parameter for extra guidance. Does not explicitly state when not to use, but context is clear.

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

delete_attachmentDelete attachmentA
Destructive
Inspect

Detach a file from a page by attachment id (editor+; ids come from list_attachments). Soft-delete. It does NOT edit the page body, so remove any inline embed separately with update_page/patch_page.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesattachment id (from list_attachments)
page_idYesthe page the file is attached to

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true. The description adds the key behavioral detail that it is a soft-delete, and confirms no impact on page body, providing context beyond annotations.

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?

Two concise sentences. First sentence covers main purpose and prerequisites; second clarifies limitations and alternatives. No fluff, front-loaded.

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?

For a simple deletion tool with 2 parameters and output schema, the description covers purpose, usage, behavioral traits, and schema references adequately. No gaps given the complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema covers 100% of parameters with descriptions. The tool description does not add extra parameter details beyond what is already in the schema, so baseline score of 3 is appropriate.

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 clearly states 'Detach a file from a page by attachment id', specifying the action, resource, and identifier. It also distinguishes from editing the page body, differentiating it from sibling tools like update_page.

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?

Explicitly states when to use ('editor+; ids come from list_attachments') and when not to use ('It does NOT edit the page body'), with clear alternatives ('remove any inline embed separately with update_page/patch_page').

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

delete_pageDelete pageA
Destructive
Inspect

Delete a page (editor+). Backlinks from other pages are preserved with the last-known title.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYespage id to delete

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true. The description adds valuable behavioral context: backlinks are preserved with the last-known title. This goes beyond what annotations provide, though it omits details like deletion permanence or side effects on other entities.

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?

The description is extremely concise: two sentences, no filler. The action is front-loaded in the first sentence, and the second sentence provides a key behavioral note. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter, output schema exists), the description covers the core action and an important side effect (backlink preservation). It does not address potential error states or data consequences, but it is reasonably complete for the complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100%, and the parameter `id` is clearly documented in the schema as 'page id to delete'. The description does not add any additional parameter semantics, so it meets the baseline expectation.

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 clearly states 'Delete a page (editor+)', with a specific verb and resource. It distinguishes from sibling tools like create_page, update_page, and delete_space by specifying the target (page) and required permission level.

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?

The description indicates use for deleting pages with editor+ permissions. It does not explicitly state when not to use or provide alternatives, but the context of sibling tools and the clear action makes the usage fairly obvious.

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

delete_spaceDelete spaceA
Destructive
Inspect

Delete a space AND all its pages, comments, revisions and share links. Owner only. Irreversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesspace id to delete (cascades)

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already confirm destructiveHint=true, but the description adds important context: cascading deletion of all associated content, ownership requirement, and irreversibility. These details enhance agent understanding beyond the annotation alone.

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?

The description is extremely concise (two sentences) and front-loaded with the core action. Every word adds value—'Delete a space AND all its pages, comments, revisions and share links. Owner only. Irreversible.'

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description does not need to detail return values. It adequately covers scope, prerequisites, and irreversibility. The context of sibling tools (e.g., delete_page, update_space) is addressed indirectly by specifying the full cascade.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100% for the single parameter, with 'space id to delete (cascades)' in the schema. The tool description does not add additional meaning to the parameter beyond what the schema provides, so baseline 3 is appropriate.

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 clearly states the action ('delete'), the resource ('space'), and the cascading effect on pages, comments, revisions, and share links. It distinguishes itself from sibling tools like delete_page or delete_attachment by specifying the full scope.

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?

It explicitly states 'Owner only' and 'Irreversible', providing clear guidance on when to use (only if owner) and the consequence. It does not mention alternatives like archiving, but for a destructive operation this is sufficient.

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

edit_sheetEdit sheet (structured)AInspect

Make a STRUCTURED edit to a sheet (a sheet=true page), editor+. Prefer this over update_page for sheets: you pass a typed operation and tela rewrites the Defter markdown correctly — inserting a row shifts every formula below it, deleting a column re-references the rest, so you never corrupt the grid by hand-editing text. Pass one op (or a batch via ops, applied atomically). Each op is {kind, ...} where kind is one of: setCells {cells:[{ref:"B2",text:"=A2*1.2"}]} — write literals/formulas by A1 ref; insertRows/deleteRows {at:<1-based row>, count?}; insertCols/deleteCols {at:<col letter or 1-based index>, count?}; setStyle {target:"A1:C1"|"B"|"2", attrs:{...}} — bold/align/fill/number-format a range/col/row; setFreeze {rows?, cols?} — freeze N header rows / M leading cols (0 clears); addSheet {name, after?}; renameSheet {sheet, name}; deleteSheet {sheet}. Ops that target a specific tab take an optional sheet (name or 0-based index; defaults to the first). A bad ref/range/sheet is rejected with a fixable error. Call sheet_authoring_guide for the full op reference, cell/style syntax, and formula functions. Returns the updated sheet with formulas computed.

ParametersJSON Schema
NameRequiredDescriptionDefault
opNoa single SheetOp object with a 'kind' field. Provide this OR ops.
opsNoan ordered batch of SheetOps applied atomically (all-or-nothing; the sheet is only rewritten if every op succeeds). Provide this OR op.
page_idYesthe sheet page id to edit (a page with sheet=true)

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only state non-read-only. The description adds critical behavioral details: operations are atomic, errors are fixable, returns updated sheet with computed formulas, and warns against manual editing to avoid grid corruption. This far exceeds the annotation burden.

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 description is dense but well-structured, starting with purpose and preference. Every sentence adds value, though it is slightly verbose for a single tool. Could be tightened by removing redundant 'Pass one op (or a batch...)', but overall efficient.

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 tool's complexity (multiple op kinds, batch, atomicity, output schema), the description is remarkably complete. It covers all key aspects: permission, behavior, error handling, output, and points to additional reference. No significant gaps remain.

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 coverage is 100%, yet description adds substantial meaning: explains 'op' structure with examples per kind, 'ops' batch with atomicity, and clarifies 'page_id'. Provides context that schema alone cannot, like 'A1 ref' and optional 'sheet' per op.

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 clearly states the verb 'edit' and resource 'sheet', differentiates from 'update_page' by explicitly preferring this tool for sheets, and specifies 'STRUCTURED edit' with 'editor+' permission. It leaves no ambiguity about what the tool does and its unique value.

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 advises 'Prefer this over update_page for sheets', implying when to use (sheets) and when not (non-sheet pages). It also directs to 'sheet_authoring_guide' for full details, providing clear guidance on alternatives and additional resources.

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

fetchFetch documentA
Read-only
Inspect

Fetch a tela page's full text by id — the fixed-shape ChatGPT Deep Research companion to search (the id comes from a search result). Read-only. Prefer get_page for normal use (same body plus richer metadata and trust signals); reach for fetch only when the Deep Research search/fetch contract requires it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYespage id, as returned by search results

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
textYes
titleYes
metadataYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds that the tool is read-only and returns 'full text', which aligns with annotations. It does not contradict, but could mention more about the response shape or limitations.

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?

The description is concise (two sentences), front-loaded with purpose, and includes essential usage guidance without unnecessary words. Every sentence adds value.

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 tool's simplicity (one required parameter, output schema exists), the description covers purpose, alternative use cases, and context. It is complete for the agent to decide when to invoke.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

With 100% schema coverage, the parameter 'id' is already well-described in the schema as 'page id, as returned by search results'. The description adds no further semantic details, so baseline 3 is appropriate.

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 uses a specific verb ('Fetch') and resource ('tela page's full text by id'), and distinguishes itself from sibling tool 'get_page' by noting it is a 'fixed-shape' companion to 'search'. It clearly states what the tool does and how it differs.

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?

Explicit guidance is provided: 'Prefer get_page for normal use... reach for fetch only when the Deep Research search/fetch contract requires it.' It also specifies that the id comes from a search result, setting clear context for use.

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

find_overlapsFind overlapping pagesA
Read-only
Inspect

Near-duplicate page PAIRS that share a near-identical passage (real merge/redirect candidates) for wiki hygiene. Optional space_id restricts to one space; threshold (0..1, default 0.92) is the minimum chunk-level similarity to count as a duplicate.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNomax pairs (default 50)
space_idNooptional space id to restrict to overlaps within one space
thresholdNomin chunk-level cosine similarity 0..1 to count as a duplicate (default 0.92)

Output Schema

ParametersJSON Schema
NameRequiredDescription
overlapsYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true and destructiveHint=false. Description adds transparency by specifying return of page pairs and chunk-level similarity mechanism, without contradicting annotations.

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?

Single sentence front-loads the verb and resource, with no extraneous words. Every part adds value.

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?

Output schema exists, so return values are covered. Description addresses purpose, optional parameters, and defaults, sufficient for a read-only list tool with clear annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema coverage is 100%, but description adds meaning by explaining 'limit' as max pairs, 'space_id' as optional restriction, and 'threshold' as minimum cosine similarity with default 0.92, enhancing schema descriptions.

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 clearly states it finds near-duplicate page pairs that share a near-identical passage, with a specific wiki hygiene goal. It distinguishes from siblings like 'related_pages' by focusing on merge/redirect candidates.

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?

Describes optional parameters for restricting to a space and setting threshold, implying usage for duplicate detection. Does not explicitly state when not to use, but the context of wiki hygiene and 'near-duplicate' pairs provides implicit guidance.

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

generate_deck_imageGenerate deck imageAInspect

Generate an image from a prompt and attach it to a deck page (editor+), ready for a bg:/image: slot. Returns the serve URL + a snippet; reference it by path (don't regenerate on re-render). Read the imagery module first (deck_authoring_guide module="imagery"): most slides need NO image — use it for atmosphere/concept/focal only, reuse ONE background, write rich on-palette prompts, and prefer images raw. May be unavailable (503) if the instance hasn't configured image generation or AI is paused; generation can take from ~20s to a few minutes depending on the model.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesid of the deck page to attach the generated image to
nameNooptional attachment filename (default deck-image-<n>.png)
seedNooptional seed for reproducibility
sizeNoWxH, default 1280x720 (16:9 — the cover/bg/bleed slot aspect)
modelNooptional model override (else the endpoint default)
stepsNosampling steps; ~10 for hero/cover, ~4 for incidental texture (more ≈ linearly slower). Omit for the model default
promptYesthe image prompt — rich and specific (scene, light, texture, on-variant colours). For FLUX models append 'no text, no letters, no words' or it invents garbled type; OMIT that only when you deliberately want legible in-image text

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
noteYes
markdownYes

TDQS

A4.8/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=false, etc.), the description adds critical behaviors: attaches to deck page, requires editor+, returns URL and snippet, may be unavailable (503), generation time varies, and advises against regeneration. Model-specific advice (FLUX) further enhances transparency.

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?

Front-loaded with main action and returns. While somewhat lengthy, every sentence adds value. Could be slightly trimmed but remains efficient for the information density.

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?

Covers all necessary aspects: action, requirements, usage rules, error conditions, timing, and return format. With an output schema existing, the description still provides ample context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema coverage is 100%, but description adds meaningful guidance: rich prompts with FLUX append note, steps number suggestions, size default with aspect ratio. This elevates understanding beyond schema definitions.

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 clearly specifies the verb 'generate' and the resource 'image from a prompt attached to a deck page'. It distinguishes from siblings like 'treat_deck_image' by focusing on generation with prompt, and provides context on usage (atmosphere/concept/focal only).

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?

It explicitly states when to use ('atmosphere/concept/focal only'), when not to use ('most slides need NO image'), and directs to the imagery module for guidance. Also mentions potential unavailability and timing, aiding agent decision.

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

get_pageGet pageA
Read-only
Inspect

Full markdown body + metadata for a numeric page id. Includes an epistemic block — trust signals computed from the wiki's own state: freshness (age, stale, review_overdue), provenance (human / agent / sync), and corroboration vs. dispute against same-space pages. Weigh it: prefer fresh, corroborated, human-reviewed pages; treat a stale or disputed page as lower-confidence and check its listed disputes before relying on it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesnumeric page id
formatNo'full' (default) returns the markdown body; 'map' returns just the heading outline (section levels + paths) and no body — cheap to read, and each path is a target for patch_page; 'values' — for a SHEET page (sheet=true), returns the computed spreadsheet as self-describing prose (formulas materialized to their numbers, styling stripped) so you read the answers, not the raw =formulas (no effect on non-sheet pages)

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes

TDQS

A4.8/5.0
Behavior5/5

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

Discloses the epistemic block with detailed fields (freshness, provenance, corroboration) and their implications. Exceeds what annotations provide (readOnlyHint, no destructive/ openWorld). No contradictions with annotations.

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?

Concise, front-loaded with purpose, and each sentence adds value. No fluff.

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 output schema exists, description covers all necessary context: what is returned, parameter modes, and how to use the epistemic block. Adequately handles tool complexity.

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 coverage is 100%, but description adds significant value by explaining each format option: 'full' returns markdown body, 'map' returns heading outline (cheap, targets for patch_page), 'values' returns computed spreadsheet for sheet pages. This clarifies usage beyond schema.

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 clearly states 'Full markdown body + metadata for a numeric page id', specifying the resource and verb. It distinguishes from siblings by focusing on retrieval of content and trust signals, not modification or listing.

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?

Provides guidance on how to interpret the epistemic block ('prefer fresh, corroborated, human-reviewed pages'), which helps in acting on the output. Implicitly indicates when to use the tool (when full content and trust signals are needed) vs alternatives like format='map' for cheap outlines.

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

get_spaceGet spaceA
Read-only
Inspect

Fetch one space's metadata (id, name, slug) by id. Read-only. Use when you already hold a space_id and just need its name/slug; to discover spaces use list_spaces, to list its pages use list_pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesspace id

Output Schema

ParametersJSON Schema
NameRequiredDescription
spaceYes
owner_orgNo
page_countYes
member_countYes
owner_handleNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, so the 'Read-only' tag is redundant but helpful. The description adds value by specifying the exact returned fields (id, name, slug) beyond annotations. No 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?

Two dense sentences with no wasted words. Purpose is front-loaded, and usage guidance is concise. Perfect for quick agent comprehension.

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 a simple tool with one parameter, an output schema (not shown), and clear annotations, the description covers purpose, usage, and alternatives completely. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100% with a clear description of 'id' as 'space id'. The description does not add extra semantic meaning beyond the schema, so baseline 3 is appropriate.

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 clearly states the verb 'fetch', the resource 'one space's metadata', and the specific fields ('id, name, slug'). It distinguishes itself from siblings by saying 'use when you already hold a space_id and just need its name/slug', contrasting with list_spaces and list_pages.

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?

Explicitly states when to use ('when you already hold a space_id and just need its name/slug') and when not to (for discovery or listing pages), with direct alternatives: list_spaces and list_pages.

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

knowledge_gapsKnowledge gapsA
Read-only
Inspect

The most-asked "ask your docs" questions the corpus could NOT answer — a content roadmap. Instance-admin only (exposes users' questions). Optional since_days window.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNomax gaps (default 50)
since_daysNoonly count asks in the last N days (0 = all time)

Output Schema

ParametersJSON Schema
NameRequiredDescription
gapsYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint. The description adds that it exposes users' questions and is admin-only, which are behavioral traits beyond annotations (privacy/access).

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?

Two sentences: first defines the tool's purpose, second adds access constraint and optional parameter. No wasted words, front-loaded.

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?

Tool has an output schema, no required params, simple behavior. Description fully covers what the tool does, its access restrictions, and the optional time window. Complete for this use case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100% with detailed descriptions for both parameters (limit and since_days). The description only mentions 'Optional since_days window' which doesn't add new meaning beyond the schema. Baseline 3.

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?

Description clearly states it returns 'the most-asked ask your docs questions the corpus could NOT answer — a content roadmap.' This is a specific verb+resource, and the purpose is distinct from sibling tools like list_pages or search.

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?

The description notes 'Instance-admin only (exposes users' questions)' and 'Optional since_days window,' providing clear context and parameter guidance. No explicit alternatives or when-not-to-use, but adequate.

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

lint_deckLint slide deckA
Read-only
Inspect

Validate a deck page's slides against the tahta theme contract — unknown layouts, missing required fields, type/format mistakes. Run after authoring/editing a deck to catch problems before presenting. Returns structured issues per slide. For the full list of valid layouts and each layout's fields, call deck_authoring_guide.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesid of the deck page to validate

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
hintNo
errorsYes
issuesYes
warningsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so description adds value by stating it returns structured issues per slide, which provides context beyond the safety profile. No contradictions.

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?

Three sentences, each with clear purpose. First sentence defines action, second gives usage timing and output, third references sibling. No fluff.

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?

Complete for a simple tool: explains what it does, when to use, what output to expect (structured issues), and where to find more info (deck_authoring_guide). Output schema presumably covers return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100% with clear description for the single parameter 'id'. Description does not add extra meaning beyond the schema, so baseline 3 is appropriate.

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?

Description clearly states verb 'Validate', resource 'deck page's slides', and scope 'against the tahta theme contract' including specific checks (unknown layouts, missing required fields, type/format mistakes). Distinguishes from siblings like deck_authoring_guide.

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?

Explicitly states when to use: 'Run after authoring/editing a deck to catch problems before presenting.' Also provides exclusion and alternative: 'For the full list of valid layouts ... call deck_authoring_guide.'

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

list_attachmentsList attachmentsA
Read-only
Inspect

List the files attached to a page (uploads AND rclone-synced files): name, mime, byte size, a stable serve URL, an absolute download_url, and a ready-to-embed markdown snippet. embedded tells you the page body already references the file.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYespage whose attachments to list

Output Schema

ParametersJSON Schema
NameRequiredDescription
attachmentsYes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds key behavioral details: lists both upload and rclone-synced files, provides specific fields including 'embedded' flag indicating if file is referenced in page body.

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?

Two concise sentences front-load the purpose, with no redundant or extraneous information.

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?

With output schema present, description still lists return fields. Single required parameter, annotations present, and description covers purpose and behavioral context fully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100%; description does not add extra meaning beyond the schema's 'page whose attachments to list'.

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?

Description clearly specifies verb 'List', resource 'attachments of a page', and lists returned fields (name, mime, size, URLs, markdown snippet). Distinguishes between upload and rclone-synced files.

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

Usage Guidelines3/5

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

Implies usage for listing page attachments, but no explicit guidance on when to use vs alternatives (e.g., upload_attachment) or when not to use.

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

list_pagesList pagesA
Read-only
Inspect

Flat page listing in a space (read-only). Pass parent_id for the direct children of one page; omit for top-level pages. Use to browse a space's structure or find a page_id; to find pages by keyword use search, and to read a page's body use get_page.

ParametersJSON Schema
NameRequiredDescriptionDefault
space_idYesid of the space to list pages in
parent_idNooptional parent page id; omit for top-level pages

Output Schema

ParametersJSON Schema
NameRequiredDescription
pagesYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already indicate readOnly=true; the description adds that the listing is 'flat' and per-space, but does not mention pagination or ordering. This is adequate but could be more specific.

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?

Two sentences efficiently convey the core purpose, safety, and alternative tools. Front-loaded with the main action and read-only nature.

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 presence of an output schema, the description sufficiently covers the tool's usage scenarios, relationships with siblings, and parameter guidance for a simple listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema coverage is 100%, but the description adds the crucial detail that parent_id returns 'direct children' rather than all descendants, which is not explicit in the schema.

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 clearly states the tool's purpose: listing pages in a space, and distinguishes it from sibling tools by specifying that 'search' is for keyword search and 'get_page' is for reading page body.

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?

Explicitly explains when to use the parent_id parameter and when to omit it, and provides guidance on using alternative tools for different needs (search for keywords, get_page for body).

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

list_sharesList share linksA
Read-only
Inspect

List a page's public share links (editor+): id, token, absolute url, has_password, include_descendants, expires_at, revoked_at. Active links only by default; pass include_revoked to also see revoked ones. Tokens are bearer secrets, so this needs a write-scoped key.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYespage whose share links to list
include_revokedNoalso include revoked links (default: active only)

Output Schema

ParametersJSON Schema
NameRequiredDescription
sharesYes

TDQS

A4/5.0
Behavior4/5

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

Adds important context beyond annotations: active-only default, revoked links optional, and requires write-scoped key due to bearer secrets. Discloses returned fields.

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?

Two sentences, front-loaded purpose, no waste. Efficient and well-structured.

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?

Output schema exists and annotations present. Description covers purpose, parameters, and key security requirement; complete for a listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema coverage 100%, but description adds meaning to include_revoked (default behavior) and clarifies page_id context (page's share links).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb 'List' and resource 'page's public share links' with scope (editor+). No explicit sibling differentiation, but the purpose is distinct from share_page and revoke_share.

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

Usage Guidelines3/5

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

Provides parameter usage (include_revoked), but no explicit when-to-use vs alternatives or when-not-to-use.

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

list_spacesList spacesA
Read-only
Inspect

List every space the API key can access (id, name, slug). Read-only. Start here to discover a space_id for list_pages / search / create_page when you don't already have one; for a single space you already know, use get_space instead.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
spacesYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description adds value by specifying the returned fields (id, name, slug) and confirming read-only nature. No additional behavioral traits 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the main action. Every sentence adds value without waste.

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?

With 0 parameters and an output schema present, the description fully explains what the tool does, what it returns (fields), and when to use it. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

There are 0 parameters, and schema coverage is 100%. The description does not need to add parameter info. Baseline 4 is appropriate.

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 clearly states 'List every space the API key can access' with specific verb and resource. It distinguishes from siblings by noting 'for a single space you already know, use get_space instead'.

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?

Explicitly says to start here to discover a space_id for other tools when you don't have one, and advises using get_space for a known single space. This provides clear when-to-use and when-not-to-use guidance.

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

move_pageMove pageA
Idempotent
Inspect

Move a page: reparent (parent_id), detach to top-level (make_root), reorder (position), and/or relocate to another space (space_id). Editor+ in both source and target space. Provide at least one of space_id / parent_id / make_root / position.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYespage to move
positionNonew 0-based position among siblings (omit to keep)
space_idNorelocate to this space (omit to keep)
make_rootNodetach to top-level (mutually exclusive with parent_id)
parent_idNonew parent page id (omit to keep; mutually exclusive with make_root)

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes

TDQS

A4.5/5.0
Behavior4/5

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

Adds behavioral context beyond annotations: permission requirements and parameter mutual exclusivity (make_root vs parent_id). Annotations already indicate idempotent and non-destructive, and the description does not contradict.

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?

Three sentences, each serving a distinct purpose: operations, permissions, constraints. No redundant or extraneous text.

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?

With output schema present, the description covers all necessary aspects: actions, constraints, and permissions. No critical gaps for an idempotent, non-destructive move operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema coverage is 100%, and the description adds value by grouping parameters by operation and clarifying constraint ('mutually exclusive with parent_id'). This reduces ambiguity about which parameters to combine.

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 clearly states the action (move a page) and specifies the four operations (reparent, detach, reorder, relocate). It distinguishes this tool from sibling tools like update_page and patch_page by focusing on structural movement rather than property updates.

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?

Provides explicit permission requirements ('Editor+ in both source and target space') and mandatory parameter condition ('Provide at least one of...'). No explicit comparison with alternatives, but the constraints are sufficiently clear for correct usage.

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

patch_pagePatch page sectionAInspect

Surgically edit ONE section of a page instead of rewriting the whole body (editor+). First call get_page format:"map" to see the section paths, then patch the target. Cheaper and safer than update_page on a long page — it never touches the rest of the document. Snapshots a revision like any edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYespage id to patch
targetYesthe section to edit, by its heading path from get_page format:"map" (e.g. 'Setup' or 'Deploy > Production'); the bare heading text also resolves
contentNomarkdown to insert; omit for delete
operationYesappend (add to the end of the section's body), prepend (add right under the heading), replace (swap the section's body, heading kept), or delete (remove the heading and its body)
idempotency_keyNooptional client-generated key; a retry with the same key returns the original result instead of re-applying the patch

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes

TDQS

A5/5.0
Behavior5/5

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

The description goes beyond annotations by stating 'never touches the rest of the document' and 'snapshots a revision like any edit.' Since annotations declare readOnlyHint=false and destructiveHint=false, the description adds valuable context about safety and revision behavior 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?

Two sentences that are dense with information: first sentence states purpose and comparison, second provides workflow step and safety reassurance. No unnecessary words, front-loaded with key action.

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 presence of an output schema, the description covers all needed context: when to use, prerequisites, behavioral traits, and parameter details. It is fully adequate 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?

Schema coverage is 100%, but the description adds meaning: it explains how 'target' works (heading path from get_page map), describes operations (append, prepend, replace, delete), and clarifies content usage ('markdown to insert; omit for delete'). This enriches parameter understanding.

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 clearly states the tool's purpose: 'Surgically edit ONE section of a page instead of rewriting the whole body.' The verb 'surgically edit' and resource 'page section' are specific, and it distinguishes from sibling tool 'update_page' by emphasizing that it only edits one section.

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?

Explicit guidance is provided: 'First call get_page format:"map" to see the section paths,' and it compares to update_page: 'cheaper and safer than update_page on a long page — it never touches the rest of the document.' This tells the agent when and how to use the tool.

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

preview_deckPreview slide deckA
Read-only
Inspect

Render a deck page to slide images and return them, so you can SEE how the deck looks (don't author blind). Pass slides to preview specific 1-based frames; omit for the first few. Renders are cached.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesid of the deck page to render and preview
slidesNooptional 1-based frame numbers to preview; omit for the first few

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds valuable behavioral context: 'Renders are cached', which is not in annotations. No contradictions.

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?

Three sentences: purpose, parameter usage, and caching behavior. Every sentence adds value and is front-loaded. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 params, no output schema), the description covers purpose, parameter usage, and caching. It could be improved by describing the return format (e.g., list of image URLs), but is mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100% and both parameters have clear descriptions in the schema. The description repeats the slides parameter guidance but adds no new meaning beyond the schema. Baseline 3 is appropriate.

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 clearly states the tool's purpose: 'Render a deck page to slide images and return them'. It distinguishes from sibling tools like 'generate_deck_image' by emphasizing visual preview ('so you can SEE how the deck looks') and advising not to author blind.

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?

The description provides clear context: use to see how the deck looks before authoring. It gives parameter guidance ('Pass slides to preview specific 1-based frames; omit for the first few') but does not explicitly mention when not to use or compare with alternatives.

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

read_chunkRead chunkA
Read-only
Inspect

Fetch one chunk's full section text by chunk_id (from a research source), for a page OR a file chunk (read-only). Middle granularity — use it to expand a single cited section; for the whole page use get_page. A file chunk cites its file (file_name + parent page_id + download_url).

ParametersJSON Schema
NameRequiredDescriptionDefault
chunk_idYeschunk id from a research result

Output Schema

ParametersJSON Schema
NameRequiredDescription
chunkYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint. Description adds context about returning section text and file chunk details (file_name, parent page_id, download_url), which is valuable beyond annotations.

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?

Two sentences, front-loaded with main action, no wasted words.

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 output schema exists, description adequately covers what the tool does, granularity, and special behavior for file chunks.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100% with a clear description of chunk_id. Description adds context that the ID comes from a research result, but doesn't add formatting or constraints beyond schema.

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 clearly states it fetches one chunk's full section text by chunk_id from a research source, specifying page or file chunk (read-only). It distinguishes from get_page for whole page.

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?

Explicitly says 'Middle granularity — use it to expand a single cited section; for the whole page use get_page.' Also describes file chunk citations.

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

request_attachment_uploadRequest a direct upload URLAInspect

Get a short-lived signed PUT URL to upload a file WITHOUT sending its bytes through the model context — for files over upload_attachment's 5 MB inline cap, or to avoid context bloat. Flow: call this → the host PUTs the raw bytes to the returned put_url over HTTP → then either read that PUT response or call confirm_attachment_upload to get the embed snippet, and place it with update_page/patch_page. Editor+. Only works on hosts that can make an outbound HTTP PUT; otherwise use upload_attachment.

ParametersJSON Schema
NameRequiredDescriptionDefault
mimeNooptional content-type hint; for images the server still trusts magic bytes
nameYesfile name including extension, e.g. deck.pdf or photo.png
page_idYespage to attach the file to

Output Schema

ParametersJSON Schema
NameRequiredDescription
uploadYes

TDQS

A4.9/5.0
Behavior5/5

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

The description adds significant behavioral context beyond annotations: it explains the purpose of the signed URL (direct upload), the required outbound HTTP PUT capability, and the follow-up actions (reading response or calling confirm_attachment_upload). No contradictions with annotations.

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?

The description is concise, with each sentence serving a purpose: purpose, flow, conditions, and alternatives. It is front-loaded with the key action and provides structured guidance without 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?

Given the presence of an output schema (not shown but indicated) and the tool's complexity (multi-step flow), the description covers all necessary context: usage conditions, step-by-step flow, prerequisites, and alternatives. It is complete and actionable for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining that 'mime' is an optional content-type hint and that the server trusts magic bytes for images, and that 'name' should include the extension. This nuance improves parameter understanding.

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 clearly states it gets a short-lived signed PUT URL for uploading files, distinguishing it from upload_attachment by avoiding context bloat and handling large files. It specifies the resource (PUT URL) and verb (request/get), making the purpose unambiguous.

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 states when to use this tool (files over 5 MB or to avoid context bloat) and when not to (if host cannot make outbound HTTP PUT, then use upload_attachment). It also provides a clear flow of steps to follow after obtaining the URL.

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

researchResearch the wikiA
Read-only
Inspect

Answer a question — or gather everything relevant on a topic — from the wiki by MEANING. One call assembles answer-ready grounding: the full bodies of the pages that matter (not isolated fragments), pulled from pages AND attached files (PDFs, docs), plus any flagged disagreements among the sources and a low_confidence signal. Returns context (a numbered [n] excerpt block to ground your answer), sources (the cited hits aligned to [n], each with page_id/chunk_id for drill-in and a download_url for file sources), disagreements (conflicts to surface, [n]-keyed), and low_confidence. YOU write the answer from context and cite sources by their [n]. To read one section deeper use read_chunk (chunk_id from a source) or get_page (full page). For exact-name/term lookup use search. Requires a configured embedder (503 otherwise).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNooptional retrieval depth override (default service-defined)
questionYesthe question to answer, or topic to gather context on
space_idNooptional space id to restrict retrieval to

Output Schema

ParametersJSON Schema
NameRequiredDescription
contextYes
sourcesYes
disagreementsNo
low_confidenceYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context beyond annotations: it returns context, sources, disagreements, and low_confidence signals; it pulls from pages and attached files; it assembles answer-ready grounding in one call. No contradictions.

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 description is well-structured and front-loaded with purpose, followed by return values and alternatives. It is efficient but slightly longer than necessary; however, every sentence adds value.

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 tool's complexity (3 parameters, output schema, many siblings), the description is complete. It explains return types, prerequisites, and error conditions, and references alternatives. The output schema exists, so full return structure details are not needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100% with all parameters described. The baseline is 3. The tool description does not add additional parameter-level detail beyond what the schema already provides, so the score remains at baseline.

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 clearly states the tool's purpose: 'Answer a question — or gather everything relevant on a topic — from the wiki by MEANING.' It uses a specific verb+resource combination and explicitly distinguishes from sibling tools like search (exact-name/term lookup), read_chunk, and get_page.

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 provides explicit guidance on when to use alternatives: 'To read one section deeper use read_chunk ... or get_page. For exact-name/term lookup use search.' It also notes a prerequisite (requires configured embedder) and mentions the error code 503 if missing.

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

revoke_shareRevoke share linkA
DestructiveIdempotent
Inspect

Disable a public share link by its share id (editor+; ids come from list_shares). The link stops working immediately. Idempotent — revoking an already-revoked link is a no-op.

ParametersJSON Schema
NameRequiredDescriptionDefault
share_idYesid of the share link to revoke (from list_shares)

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate destructive and idempotent behavior. Description adds valuable context: immediate effect ('stops working immediately') and confirms idempotency as a no-op. No contradictions.

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?

Two sentences, no wasted words. Front-loaded with the action, followed by key details and idempotency note. Excellent structure.

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?

For a simple tool with one required parameter and an output schema, the description covers all essential aspects: purpose, effect, safety (idempotent), and parameter source. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Only one parameter with 100% schema coverage. Description adds meaning by specifying source of share_id (from list_shares) and access level (editor+), going beyond the schema definition.

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?

Clearly states the action (disable/revoke), resource (public share link), identification method (by share id from list_shares), and immediate effect. Distinguishes itself from sibling tools like list_shares.

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?

Provides context on when to use (to revoke a share link) and mentions prerequisite (ids from list_shares). Does not explicitly state when not to use or alternatives, but the intent is clear.

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

share_pageShare page (public link)AInspect

Mint a public share link for a page — a URL anyone can open with NO tela login (editor+). Returns the absolute url plus the link's id and token. Options: include_descendants shares the whole subtree (not just this page); password gates it behind a passphrase; expires_at (UTC 'YYYY-MM-DD HH:MM:SS') auto-expires it. Each call mints a NEW link — use list_shares to see existing ones and revoke_share to disable one. This shares a single page tree; to publish a WHOLE space, use the space's visibility setting instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYespage to mint a public link for
passwordNogate the link behind a passphrase (omit for open access)
expires_atNoauto-expire at this UTC 'YYYY-MM-DD HH:MM:SS' (omit for no expiry)
include_descendantsNoshare the whole subtree, not just this page

Output Schema

ParametersJSON Schema
NameRequiredDescription
shareYes

TDQS

A5/5.0
Behavior5/5

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

Beyond annotations, it discloses that each call mints a new link, explaining idempotency. It also describes return values and options. No contradiction with annotations.

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?

Concise paragraph with no fluff. Front-loaded with purpose, then options, then behavior, then comparisons. Each sentence is essential.

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?

Covers purpose, parameters, return values, behavior, and relations to other tools. Complete for a mutation tool with good annotations.

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 coverage is 100%, but description adds context: include_descendants shares subtree, password gates behind passphrase, expires_at format and behavior. Adds value beyond schema.

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 clearly states 'Mint a public share link for a page' with specific verb and resource. It distinguishes from sibling tools like list_shares and revoke_share.

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?

Explicitly says when to use this tool (sharing a page tree) and when not to (for a whole space, use space visibility setting). Mentions alternatives like list_shares and revoke_share.

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

sheet_authoring_guideSheet authoring guideA
Read-only
Inspect

Return the full tela spreadsheet (sheet) authoring guide as markdown — the Defter text format, coordinates, the formula functions, and the ```defter-style styling/format/chart syntax. Read this FIRST when creating or editing a sheet (a sheet=true page) so you write valid, well-formatted Defter markdown instead of guessing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
guideYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description adds value by specifying the returned content (markdown guide). It does not contradict annotations and provides sufficient behavioral context.

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?

Two sentences: first states what it returns, second states when to use it. No fluff, front-loaded with key information.

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 tool's simplicity (no parameters, output schema exists), the description is fully complete. It explains what, when, and why, with no gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

No parameters exist (0 params, schema coverage 100%). The description correctly adds no parameter info, as none are needed. Baseline 4 applies.

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 clearly states it returns the full sheet authoring guide as markdown, listing specific content (Defter text format, coordinates, formulas, syntax). It also gives a usage instruction: read this first when creating/editing a sheet. This distinguishes it from action-oriented siblings like edit_sheet.

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?

Explicitly says 'Read this FIRST when creating or editing a sheet' and advises against guessing. This tells the agent exactly when to use this tool and provides context for sequence of operations.

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

submit_feedbackSubmit feedbackAInspect

Submit free-text feedback about tela / tela-mcp itself (friction, bugs, missing capabilities). NOT for page content — use add_comment for that.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesfeedback body (1-8000 chars)
kindNooptional type: idea | bug | other
subjectYesshort subject (1-200 chars)

Output Schema

ParametersJSON Schema
NameRequiredDescription
feedbackYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already indicate this is a mutation (readOnlyHint=false) but not destructive. The description adds the scope constraint but does not disclose additional behaviors such as confirmation, rate limits, or side effects beyond the basic submission action.

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?

Two sentences, zero waste. The purpose and exclusions are front-loaded, making it easy for an agent to quickly understand scope.

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 presence of an output schema and full parameter descriptions, the description covers the essential context: what to submit and what not, with no missing information for correct agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100%, so the description does not need to detail parameters. It does not add any extra semantics beyond what the schema already provides for subject, body, and kind.

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 clearly states the tool submits free-text feedback about the tool itself, distinguishing it from page content feedback. It explicitly names a sibling tool (add_comment) for the alternative use case.

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?

Provides explicit guidance on when to use (feedback about tela/tela-mcp) and when not to use (page content), with a direct reference to add_comment as the appropriate alternative.

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

treat_deck_imageTreat deck imageAInspect

Make an image tahta-grade for a deck's variant (editor+): crop to 16:9, apply a scheme-aware duotone (palette-lock), grain, and an optional contrast scrim. Upload the source with upload_attachment first, then pass its attachment_id; the treated JPEG is saved as a new attachment and returned with a ready-to-place snippet for a bg:/image: slot. This is the tahta-imagine treat step — a FALLBACK for off-palette or reused images; prefer rich on-palette images raw, and never duotone (mode=duotone) a real-colour focal subject — use mode=none for those. See the imagery capability module (deck_authoring_guide module="imagery").

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesid of the deck page the source image is attached to (the treated result is attached here too)
modeNoduotone (palette-lock to the variant, default) or none (crop+grain only, keep the image raw)
scrimNooptional contrast scrim: left or bottom (for text over the image); omit for none
variantNotahta variant to treat for; omit to use the deck's own variant
attachment_idYesid of an existing attachment ON THIS PAGE to treat (upload the source first with upload_attachment)

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
noteYes
variantYes
markdownYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false. The description adds critical context: it modifies the image and saves a new attachment, returns a snippet, and warns against duotone on real-colour subjects. This goes beyond annotations, but annotations already establish mutability.

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?

Description is a single dense paragraph, efficient but packed with information. Could be slightly more structured (e.g., bullet points), but it front-loads the main action and follows with guidelines. No wasted words.

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 tool's complexity (5 params, prerequisite step, output snippet), the description covers all essential aspects: prerequisites, process, output format, and reference to the imagery module. The presence of an output schema reduces the need to detail return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema covers 100% of parameters. Description clarifies relationships (e.g., variant defaults to deck's own) and adds context for mode, scrim, and the required upload step. It enhances the schema without repeating it verbatim.

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 clearly states the tool transforms an image into 'tahta-grade' by cropping to 16:9, applying duotone, grain, and optional scrim. It distinguishes itself from siblings like generate_deck_image and upload_attachment by its specific role as a fallback treat step.

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?

Explicitly states when to use: 'FALLBACK for off-palette or reused images' and when not: 'prefer rich on-palette images raw'. Provides prerequisite: upload with upload_attachment first. Names alternatives: use mode=none for real-colour subjects.

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

update_pageUpdate pageA
Idempotent
Inspect

Patch a page's title and/or body (editor+). A body change auto-snapshots a revision. tela renders a rich block palette beyond plain markdown — to-do list, pull quote, callout, collapsible, tabs, kanban board, stat grid, timeline, calendar, poll, chart, embed, mermaid diagram, image, file attachment, code block, equation, inline math, table, highlight, wikilink, footnote. Prefer these over walls of text; read the tela://authoring-guide resource (or this server's instructions) for exact syntax. When asked for a presentation, slides, a slide deck, or a talk (any phrasing) — not a prose doc — set the page property deck=true (and optionally variant=) and write the body as slides separated by --- using the tahta layouts; call the deck_authoring_guide tool (or read the tela://deck-authoring-guide resource) for the layouts, fields, components, and variants. When asked for a spreadsheet, a table of data with formulas/totals, a budget, a tracker, or any grid that computes — not a prose doc — set the page property sheet=true and write the body as Defter markdown (compact GFM tables + an optional ```defter-style block); call the sheet_authoring_guide tool (or read the tela://sheet-authoring-guide resource) for the format, formulas, and styling.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYespage id to patch
bodyNonew markdown body (omit to leave unchanged)
propsNoreplace the whole properties bag (omit to leave unchanged); reserved keys are ignored
titleNonew title (omit to leave unchanged)

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already indicate idempotent and non-destructive behavior. The description adds valuable context: body changes trigger automatic revision snapshots, reserved keys are ignored, and the rich block palette availability. This goes beyond annotations to inform the agent of side effects and capabilities.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening sentence, but it becomes verbose with extensive lists of block types and detailed instructions for decks and sheets. Some of this detail could be delegated to the referenced authoring guides, making the description more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the presence of an output schema (not shown but noted), the description covers key aspects: authentication (editor+), side effects (snapshots), content capabilities, and special use cases. Minor gaps exist, such as error handling or rate limits, but overall it provides sufficient context for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds significant value by explaining the 'body' parameter's special formatting options (tela blocks, decks, sheets) and the 'props' parameter's reserved key behavior. This enriches understanding beyond the schema's basic descriptions.

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 clearly states the tool patches a page's title and/or body, with specific verb ('Patch') and resource ('page'). It distinguishes from creating a new page (different scope) and includes editor requirement, making purpose unambiguous. The context of slide decks and spreadsheets further clarifies use cases.

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?

The description provides clear guidance on when to use this tool vs creating content types (slide decks, spreadsheets) with explicit instructions to set appropriate page properties. However, it does not directly compare to sibling tools like 'create_page' or 'patch_page' (if different), leaving some ambiguity about when to use alternatives.

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

update_spaceUpdate spaceA
Idempotent
Inspect

Patch a space's name and/or slug (editor+); idempotent — pass only the field(s) you want to change. Changing the slug updates the space's URL path (existing page ids and links still resolve). To create a space use create_space, to read it use get_space, to remove it use delete_space.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesspace id to patch
nameNonew name (omit to leave unchanged)
slugNonew slug (omit to leave unchanged)

Output Schema

ParametersJSON Schema
NameRequiredDescription
spaceYes

TDQS

A4.7/5.0
Behavior5/5

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

Describes idempotency and permission level (editor+), and clarifies that slug change does not break existing links. All behavioral traits beyond annotations are covered.

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?

Two concise sentences, no unnecessary words. Front-loads key action and idempotency.

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 tool's complexity (3 params, no enums, output schema present), description covers all necessary aspects: action, parameters, side effects, alternatives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100% with good descriptions. Description merely rephrases the schema's info about omitting fields; adds marginal value.

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?

Clearly states it patches a space's name and/or slug, with correct verb and resource. Explicitly distinguishes from sibling tools (create_space, get_space, delete_space).

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?

Explicitly tells when to use each sibling tool (create, read, delete) and explains behavior of slug change (URL updates, links resolve).

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

upload_attachmentUpload attachmentAInspect

Upload a file (base64) and attach it to a page (editor+) — an image, PDF, dataset, etc. Returns the serve URL plus a ready-to-paste markdown snippet; then call update_page or patch_page to place it in the body (images render inline as , other files as a download card). The payload is inline base64 and rides through the model's context, so it is capped at 5 MB — keep it to small files (screenshots, charts, short PDFs). For larger files use request_attachment_upload (a direct PUT URL, bytes off-context), or the tela editor (drag-drop).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesfile name including extension, e.g. report.pdf or chart.png (drives the displayed name + type detection)
page_idYespage to attach the file to
data_base64Yesthe file bytes, base64-encoded; a leading data:<mime>;base64,… URL prefix is also accepted

Output Schema

ParametersJSON Schema
NameRequiredDescription
attachmentYes

TDQS

A5/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses that the payload is inline base64 and rides through context, capping at 5 MB. Also states the return values (serve URL and markdown snippet) and how attachments render (images inline, other files as download card). No contradiction with annotations.

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?

Four sentences with no redundancy. The first sentence captures the core action and return, the second explains the workflow, the third gives the size constraint, and the fourth provides alternatives. Front-loaded and efficient.

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?

The tool has an output schema, so return values are documented. The description covers the input, size limitation, integration step (update_page), and alternatives. For a file upload tool with moderate complexity, this is fully complete.

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 coverage is 100% for all three parameters. The description adds value by explaining that 'name' drives the displayed name and type detection, and that 'data_base64' accepts a data URL prefix. It also ties the 5 MB limit to the payload parameter, which is critical for agent decision-making.

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 clearly states the action: 'Upload a file (base64) and attach it to a page'. It specifies the supported file types (image, PDF, dataset) and distinguishes from siblings like request_attachment_upload for larger files. The verb 'upload' combined with the resource 'attachment' and page context leaves no ambiguity.

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?

Explicit guidance on when to use this tool (small files up to 5 MB) and when to use alternatives (larger files use request_attachment_upload or editor drag-drop). Also explains the follow-up step: call update_page or patch_page to place the attachment in the body. No confusion about prerequisites or context.

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

TDQS

A4.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose, with no overlapping functionality. Even closely related tools like fetch/get_page and update_page/patch_page are well-differentiated by their descriptions and use cases.

Naming Consistency5/5

All tool names follow a consistent lowercase snake_case pattern, predominantly verb_noun (e.g., create_page, list_spaces, delete_attachment). The few noun-phrase names (e.g., knowledge_gaps, deck_authoring_guide) are also consistent in style and follow the same convention.

Tool Count3/5

At 41 tools, the server is on the high end but still justifiable given its wide scope covering wiki operations, deck authoring, spreadsheet editing, and doc-generation. The count is borderline heavy but not extreme, as each tool serves a specific niche.

Completeness4/5

The tool surface covers core wiki CRUD operations, comments, attachments, sharing, searches, and semantic features. Minor gaps exist: no page revision history, no atlas project creation/deletion, and no comment reply functionality. Overall, the server is fairly complete for its domain.

Maintenance

ActivityActive
ResponsivenessSlow

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    This is a connector to allow Claude Desktop (or any MCP client) to read and search any directory containing Markdown notes (such as an Obsidian vault).
    1,444
    1,352
    AGPL 3.0
  • A
    license
    B
    quality
    A
    maintenance
    Basic Memory is a knowledge management system that allows you to build a persistent semantic graph from conversations with AI assistants. All knowledge is stored in standard Markdown files on your computer, giving you full control and ownership of your data. Integrates directly with Obsidan.md
    17
    3,846
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    End-to-end agent-managed company brain. Humans and any MCP agent co-author living docs (Markdown + extensions), 40+ visual diagrams (Mermaid, BPMN, D2, PlantUML, ELK, Excalidraw), plans, and a self-learning Knowledge Graph. 163 tools across 16 categories. Auth: OAuth 2.1 or API key. Lean, secure, affordable — from individuals to enterprise.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A token-optimized MCP server for Notion that reduces context window usage by 73% while preserving full functionality, enabling AI assistants to interact with Notion efficiently.
    15
    1
    MIT

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/zcag/tela'

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