Total CMS

co.totalcmsPublished by totalcms.coOfficial publisherv1.0.2Updated Oct 29, 2026

Total CMS docs, guides and CMS comparisons: Twig, field types, schemas, CLI, REST API and releases.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & MemoryDeveloper Tools

Overview

AI-generated overview

Read-only MCP access to a Total CMS site: browse collections and objects, run data views, and search its docs, guides and competitor comparisons.

What you can do
  • Discover collections and data views, with their schemas, properties and queryable fields
  • Query, search and fetch objects from collections, including paginated results and tcms:// resource URIs
  • Run and paginate cached data views defined in Twig
  • Search site content and fetch full documents for citation
  • Search, read and look up Total CMS documentation: Twig, field types, REST API, CLI and schema keys
  • Read guides, competitor comparison pages, release notes and pages needing re-verification
When to use it
Useful when an assistant needs to answer questions about a live Total CMS site's content, or to look up Total CMS documentation and API details instead of guessing. Also suited to research-style clients that search and cite site pages.
Requirements
A remote MCP endpoint at the Total CMS site; no local runtime or package. The connection described is read-only and anonymous, so no key is needed for reading. Writing and admin tools would require an API key or OAuth token, which this connection does not have.
Before you install
The connection is read-only; writing and admin operations (schemas, collections, cache) need an API key or OAuth token and should be raised with the user rather than attempted. Drafts are hidden from anonymous callers, so results may differ from the published site. Queries and searches are sent to the remote Total CMS site.

Installation

In SourceWeft

  1. Open Total CMS in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/co.totalcms%2Fdocs/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "total-cms": {
      "type": "http",
      "url": "https://totalcms.co/mcp"
    }
  }
}

README

Total CMS

A modern flat-file CMS for PHP — no database required

[Latest stable version on Packagist] [Required PHP version] [Commercial license]

Website • Documentation • Pricing • Free trial


About

Total CMS is a content management system built on PHP 8.2+ and Slim 4 that stores content as flat JSON files instead of in a database. There is no MySQL to provision, no migrations to run, and no plugin ecosystem to keep patched — content lives on disk, so it version-controls, backs up, and deploys like the rest of your code.

It is designed for web designers, freelancers, and agencies who want structured content and a polished admin for their clients, on any commodity PHP host.

  • No database — content is JSON on disk; deploy by copying files
  • 33 built-in collection types — blog, image, gallery, file, and more — plus unlimited custom schemas
  • Twig templating — 89 custom filters and 49 functions on top of stock Twig 3
  • Site Builder — add a page in the admin and it is live; no build or generate step
  • REST API — full CRUD for headless use, with API-key or OAuth 2.1 authentication
  • Built-in MCP server — exposes your site's collections and search to AI agents (Pro)
  • Automations — schedule, webhook, and event-triggered handlers with a job queue
  • Extensions — a register/boot lifecycle with capability-based permissions
  • Admin interface — form builder with 20+ field types, media management, passkey login
  • CLI (tcms) — collections, schemas, objects, import/export, sync, and deploys
  • Image processing — on-the-fly resizing, watermarking, and OKLCH color handling

Requirements

  • PHP 8.2+ (8.4 supported)
  • Composer 2.0+
  • Apache or Nginx with URL rewriting
  • PHP extensions: GD or ImageMagick, JSON, Fileinfo, OpenSSL

No database server. No Node.js runtime in production.

Installation

bash
composer create-project totalcms/totalcms mysitecd mysite

Point your web server's document root at public/, then open the site in a browser — the setup wizard handles the admin account, data directory, and license from there.

The installer also offers a subpath layout, which serves Total CMS from /tcms/ and leaves public/ free for your own frontend build. See the Installation Guide for web server configuration.

Twig templates

twig
{% for post in cms.collection.objects('blog') %}    <article>        <h2>{{ post.title }}</h2>        {{ post.content|markdown }}    </article>{% endfor %}

See the Twig documentation for the full filter and function reference.

CLI

bash
vendor/bin/tcms collection:listvendor/bin/tcms jumpstart:export backup.jsonvendor/bin/tcms cache:clearvendor/bin/tcms deploy

For AI agents

Total CMS is built to be worked on by coding agents:

  • llms.txt and llms-full.txt — the complete documentation in one fetch
  • Agent skill — installed into .claude/skills/ automatically on composer install, covering collections, schemas, the CLI, and the Site Builder workflow
  • Built-in MCP server — point an agent at a live site to query its collections and schemas directly (Pro edition)

Documentation

Full documentation is at docs.totalcms.co.

Support

License

Total CMS is commercial software. A license is required for production use. See LICENSE.md for terms.

Free 45-day trials are available — no credit card required. Visit totalcms.co for details.

Source: README.md at commit 6450ab3

Tools

20

describe_collection

Describe Collection

Describe one collection in detail. Returns the collection metadata plus a properties array — each entry is a property with its type, description, and indexed/filterable/sortable flags. Call list_collections first to find a collection id, then describe_collection to see what is queryable inside it. `indexed: true` means the property appears in query_collection / search_collection results (and may be filterable/sortable). `indexed: false` means the property exists on objects but is not returned by query/search — retrieve it through get_object instead.

Parameterscollectionrequired

describe_view

Describe Data View

Describe one data view in detail. Returns metadata (id, name, description, last_built, access, total_items) plus output_shape — the list of keys present on the first cached item, sampled so agents can compose effective query_view / get_view calls. Admin callers also receive the view's Twig definition for dev visibility. Use list_views to discover view ids first.

Parametersidrequired

docs_get

Get Documentation Page

Fetch a full Total CMS documentation page as markdown by its path (as returned by docs_search), e.g. "twig/data" or "site-builder/overview".

Parameterspathrequired

docs_lookup

Look Up Reference Entry

Look up a specific Total CMS reference entry: Twig functions/filters, field types, REST API endpoints, schema configuration keys, CLI commands, extension API, or builder API. Omit `name` to list all entries of a kind.

Parameterskindrequiredname

fetch

Fetch

Fetch the full document for a search result id. Returns {id, title, text, url, metadata}; `text` is the readable body for citation. Pass an id returned by the `search` tool.

Parametersidrequired

find_comparison

Find Comparison

Find the head-to-head comparison page for a competitor by name (case-insensitive partial match). Returns the full page content including the feature table. Parameters: - competitor (string, required): Competitor name, e.g. "Kirby" or "Craft". Returns: paginated comparisons objects with url per item.

Parameterscompetitorrequired

get_object

Get Object

Fetch a single object by its id from a collection. Returns the full object as a flat map of fields, decorated with a `url` field where the collection has a public URL pattern configured. This tool does not search or filter — use query_collection for paginated lists or search_collection for free-text search. Available collections and filterable properties: - articles — id (id, sortable), title (text), author (select), summary (textarea), date (date, sortable), draft (toggle), updated (datetime, sortable) - comparisons — competitor (text), competitorUrl (url), heading (text), lede (textarea), reviewed (date, sortable), draft (toggle), sort (number, sortable), id (id, sortable) - extension — id (id, sortable), name (text), extensionId (text), soldAs (text), summary (textarea), category (select), price (number, sortable), currency (select), minEdition (select), minVersion (text), bundled (toggle), beta (toggle), docsUrl (url), productUrl (url), draft (toggle), owner (select), featured (toggle), approved (datetime, sortable), submitted (datetime, sortable), weight (range, sortable) - guides — heading (text), lede (textarea), reviewed (date, sortable), draft (toggle), sort (number, sortable), id (id, sortable), kind (select), product (select) - releases — id (id, sortable), version (text), title (text), date (date, sortable), draft (toggle), urgent (toggle), fullnotesurl (url), announce (toggle) - showcase — name (text), url (url), industry (select), id (id, sortable), owner (select), draft (toggle), featured (toggle), approved (datetime, sortable), submitted (datetime, sortable), weight (range, sortable)

Parametersidrequiredformatlocalecollectionrequired

get_resource

Get Resource

Resolve a tcms:// resource URI to its underlying object. Format: tcms://{collection}/{id} — e.g. tcms://blog/hello-world. Equivalent to calling get_object with the parsed collection and id; returns the same shape. Use this when a URI has been surfaced to you (in other tool output, in user input, etc.); use get_object directly when you have a separate collection + id pair. Extension-registered URIs (other schemes) are reachable via the resources/read transport surface.

Parametersurirequired

get_view

Get Data View

Fetch a data view's full cached result by id. Output is freeform — each item's field set depends on the view's Twig definition. Call describe_view first to learn the expected shape. Capped at 50 items; larger views return the first 50 plus a hint to call query_view for pagination. For per-item paginated access use query_view directly.

Parametersidrequiredformatlocale

latest_release

Latest Release

The most recent Total CMS release: version, title, date and the release summary. Returns: paginated releases objects with url per item.

Takes no parameters.

list_collections

List Collections

Discover the collections visible to you. Lean overview — one entry per collection. Returns id, name (display label), schema (the schema id this collection uses), description, url_pattern, access level, and total_objects (so you can decide whether to paginate or enumerate). For the per-property detail of one collection (which properties exist, which are filterable/sortable), call describe_collection. Then query_collection / search_collection / get_object for the data.

Takes no parameters.

list_guides

List Guides

The site's Guides: evergreen buying-guide pages served at /guides/{id}. Returns every guide in display order with its id, heading, lede, reviewed date and draft flag. A guide's full content (contenders, choose, howToChoose, faqs, sources) is on the object itself: get_object with collection "guides". Returns: paginated guides objects with url per item.

Takes no parameters.

list_views

List Data Views

Discover the pre-computed data views visible to you. Lean overview — one entry per view. Data views are Twig-defined queries that aggregate across collections; their result is cached and accessible by id. Returns id, name, description, last_built, and access. Use the id with query_view (paginated query), get_view (fetch the whole cached result), or describe_view (output shape + metadata). For raw collection content use list_collections instead.

Takes no parameters.

needs_review

Needs Review

Comparison pages ordered by how long ago their competitor facts were last verified, oldest first. Pass `before` (ISO date) to return only pages last verified before that date. Each page shows its verification date publicly, so keeping these fresh matters. Parameters: - before (string, optional): Only pages whose reviewed date is on or before this ISO date (optional). Returns: paginated comparisons objects with url per item.

Parametersbefore

query_collection

Query Collection

Query a collection for paginated content. Returns the matching items plus pagination metadata (total, limit, offset, has_more); each item is decorated with a public `url` field where one is configured. Use REST-style `include` / `exclude` filter strings (comma-separated field:value pairs; AND-semantics for include, OR-semantics for exclude) and `sort` (e.g. `date:desc`). Only properties listed in the catalog below are queryable — other schema properties exist on objects but are not filterable here; use get_object if you need the full record or describe_collection to see every property. This tool does not free-text search content — use search_collection for that. It does not fetch a single object by id — use get_object. Available collections and filterable properties: - articles — id (id, sortable), title (text), author (select), summary (textarea), date (date, sortable), draft (toggle), updated (datetime, sortable) - comparisons — competitor (text), competitorUrl (url), heading (text), lede (textarea), reviewed (date, sortable), draft (toggle), sort (number, sortable), id (id, sortable) - extension — id (id, sortable), name (text), extensionId (text), soldAs (text), summary (textarea), category (select), price (number, sortable), currency (select), minEdition (select), minVersion (text), bundled (toggle), beta (toggle), docsUrl (url), productUrl (url), draft (toggle), owner (select), featured (toggle), approved (datetime, sortable), submitted (datetime, sortable), weight (range, sortable) - guides — heading (text), lede (textarea), reviewed (date, sortable), draft (toggle), sort (number, sortable), id (id, sortable), kind (select), product (select) - releases — id (id, sortable), version (text), title (text), date (date, sortable), draft (toggle), urgent (toggle), fullnotesurl (url), announce (toggle) - showcase — name (text), url (url), industry (select), id (id, sortable), owner (select), draft (toggle), featured (toggle), approved (datetime, sortable), submitted

Parameterssortlimitformatlocaleoffsetexcludeincludecollectionrequired

query_view

Query Data View

Paginated query against a data view's cached result. REST-syntax include/exclude/sort, same vocabulary as query_collection. View data is freeform — call describe_view first to learn the field set before composing filters. `limit` is capped at 50; use offset to paginate larger views.

Parametersidrequiredsortlimitformatlocaleoffsetexcludeinclude

search_collection

Search Collection

Free-text search within a single collection. Returns matching items decorated with a public `url`; total reflects what was found. Supports AND (default), OR, and "quoted phrases". Searches across the properties listed in the catalog below — other schema properties exist on objects but are not searchable here; use get_object for the full record or describe_collection to see every property. This tool does not filter by field value — use query_collection with `include`/`exclude` for that. Drafts are auto-hidden from anonymous callers. Available collections and filterable properties: - articles — id (id, sortable), title (text), author (select), summary (textarea), date (date, sortable), draft (toggle), updated (datetime, sortable) - comparisons — competitor (text), competitorUrl (url), heading (text), lede (textarea), reviewed (date, sortable), draft (toggle), sort (number, sortable), id (id, sortable) - extension — id (id, sortable), name (text), extensionId (text), soldAs (text), summary (textarea), category (select), price (number, sortable), currency (select), minEdition (select), minVersion (text), bundled (toggle), beta (toggle), docsUrl (url), productUrl (url), draft (toggle), owner (select), featured (toggle), approved (datetime, sortable), submitted (datetime, sortable), weight (range, sortable) - guides — heading (text), lede (textarea), reviewed (date, sortable), draft (toggle), sort (number, sortable), id (id, sortable), kind (select), product (select) - releases — id (id, sortable), version (text), title (text), date (date, sortable), draft (toggle), urgent (toggle), fullnotesurl (url), announce (toggle) - showcase — name (text), url (url), industry (select), id (id, sortable), owner (select), draft (toggle), featured (toggle), approved (datetime, sortable), submitted (datetime, sortable), weight (range, sortable)

Parameterslimitqueryrequiredformatlocalecollectionrequired

search_collections

Search Across Collections

Full-text search across every collection you can see, in one call. Returns matching items each decorated with `collection` (which collection the hit came from) and `url`. Pair `collection` + `id` to fetch the full record via get_object. Call list_collections for the available collections and describe_collection on any one for its full property list; properties not flagged filterable there exist on objects but are not searched here (use get_object for the full record). For a single-collection search use search_collection instead — same query syntax, scoped tighter. Drafts are auto-hidden from anonymous callers.

Parameterslimitqueryrequiredformatlocale

Version history

2
  1. v1.0.2LatestOct 29, 2026
  2. v1.0.1Oct 24, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.

Other Totalcms integrations