update_entry can revise a live entry without shipping the change, and unpublish_entry pulls a page out of an environment and locale without deleting anything behind it. The depth sits on the read side: get_entries carries the filtering, ordering, field-trimming and include flags of the underlying query surface, so a narrow read stays narrow instead of returning a whole content type. The thin spot is global fields — create_global_field and update_global_field exist and get_all_global_fields lists them, but there is no single-field read and no delete, so a global field, once created, can only be revised.
A Contentstack management client covering the content model, the entries written against it, the global fields shared between them, and publishing as a separate act.
- Content types across their full lifecycle: create_content_type takes title, uid, schema, options, field_rules and taxonomies; update_content_type revises title, schema, options and field_rules on an existing uid; delete_content_type removes it.
- Model reads at either grain: get_content_type returns a single type by uid and can pull in the global field schema, while get_all_content_types pages with limit and skip and can include branch info, counts and referenced content type uids.
- Entries addressed by content type: create_entry writes a new entry under a content_type_uid, update_entry revises it by entry_uid, and delete_entry removes it.
- Entry reads with the query surface exposed rather than flattened: get_entry takes a locale and can pull referenced entries, and get_entries filters through query, orders with asc or desc, trims the payload with only and except, pages with limit and skip, and can include count, schema, metadata, owner and publish details.
- Publishing as its own call: publish_entry pushes an entry to a named environment and locale, and unpublish_entry withdraws it from that same pair.
- Global fields shared across types: create_global_field and update_global_field take title, uid and schema, and get_all_global_fields pages through them with branch info and counts.
A Contentstack account and the credentials issued for it, supplied as CONTENTSTACK_API_KEY and CONTENTSTACK_MANAGEMENT_TOKEN.
One command plus a key — npx @drossman/contentstack-mcp, then supply credentials
