Sutra
Server Details
Shared private memory layer for AI agents. Write context once, carry it across Claude, ChatGPT, Grok, Cursor, Replit, Bolt, Lovable, Devin, v0 and more. Supports reusable SKILL.md bundles for agent skills discovery. OAuth 2.1 + API key auth.
The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Uptime
- 13.2% over 64 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 10 tools
Most tools have clearly distinct targets: get_cluster vs list_clusters, get_skill vs get_skill_resource, and write_observation vs search_memory. However read_context overlaps with list_clusters, get_cluster, and search_memory by also returning clusters and memories, and export_all broadly overlaps with all read tools.
All names use snake_case with a leading verb (get_, list_, read_, search_, upload_, write_, export_) and consistently place the resource after the verb. The pattern is predictable across the set.
10 tools is well within the appropriate range for a memory/context/skill server and each tool covers a distinct operation instead of fragmenting the surface.
There are significant lifecycle gaps: no update/delete for memories, no create/update/delete for clusters, and no enable/disable/delete for skills. In particular, upload_skill creates a disabled skill but there is no way to enable it, creating a dead end.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
get_skill1 field changed- changed
Input schema / properties / slug / descriptionPrevious value: -"Slug of an enabled skill, usually obtained from list_skills."New value: +"Slug identifying the enabled skill to return."
10 tool updates
- Changed
export_all3 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "clusters": { + "items": { + "properties": { + "created_at": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "is_default": { + "type": "boolean" + }, + "memories": { + "items": { + "properties": { + "cluster": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "content": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "importance": { + "type": "integer" + }, + "source_agent": { + "type": "string" + }, + "tags": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "content", + "source_agent", + "importance", + "created_at", + "tags" + ], + "type": "object" + }, + "type": "array" + }, + "memory_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "description", + "is_default", + "created_at", + "memory_count", + "memories" + ], + "type": "object" + }, + "type": "array" + }, + "exported_at": { + "type": "string" + }, + "total_memory_count": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "exported_at", + "total_memory_count", + "clusters" +]
- Changed
get_cluster8 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of memories to return from the cluster." - added
Input schema / properties / name / descriptionAdded value: +"Exact cluster name using letters, numbers, or hyphens." - added
Input schema / properties / name / maxLengthAdded value: +50 - added
Input schema / properties / name / minLengthAdded value: +1 - added
Input schema / properties / name / patternAdded value: +"^[A-Za-z0-9-]{1,50}$" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "cluster": { + "properties": { + "created_at": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "is_default": { + "type": "boolean" + }, + "memory_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "description", + "is_default", + "created_at", + "memory_count" + ], + "type": "object" + }, + "memories": { + "items": { + "properties": { + "cluster": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "content": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "importance": { + "type": "integer" + }, + "source_agent": { + "type": "string" + }, + "tags": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "content", + "source_agent", + "importance", + "created_at", + "tags" + ], + "type": "object" + }, + "type": "array" + } +} - added
Output schema / requiredAdded value: +[ + "cluster", + "memories" +]
- Changed
get_skill7 fields changed- added
Input schema / properties / slug / descriptionAdded value: +"Slug of an enabled skill, usually obtained from list_skills." - added
Input schema / properties / slug / maxLengthAdded value: +100 - added
Input schema / properties / slug / minLengthAdded value: +1 - added
Input schema / properties / slug / patternAdded value: +"^[a-z0-9]+(?:-[a-z0-9]+)*$" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "instructions": { + "type": "string" + }, + "resources": { + "items": { + "properties": { + "content_type": { + "type": "string" + }, + "path": { + "type": "string" + }, + "size_bytes": { + "type": "integer" + } + }, + "required": [ + "path", + "content_type", + "size_bytes" + ], + "type": "object" + }, + "type": "array" + }, + "skill": { + "properties": { + "created_at": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "file_count": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "source_agent": { + "type": "string" + }, + "total_bytes": { + "type": "integer" + }, + "version": { + "type": "integer" + } + }, + "required": [ + "slug", + "name", + "description", + "version", + "source_agent", + "file_count", + "total_bytes", + "created_at" + ], + "type": "object" + } +} - added
Output schema / requiredAdded value: +[ + "skill", + "instructions", + "resources" +]
- Changed
get_skill_resource10 fields changed- added
Input schema / properties / path / descriptionAdded value: +"Relative resource path exactly as returned by get_skill." - added
Input schema / properties / path / maxLengthAdded value: +300 - added
Input schema / properties / path / minLengthAdded value: +1 - added
Input schema / properties / slug / descriptionAdded value: +"Slug of the enabled skill that owns the resource." - added
Input schema / properties / slug / maxLengthAdded value: +100 - added
Input schema / properties / slug / minLengthAdded value: +1 - added
Input schema / properties / slug / patternAdded value: +"^[a-z0-9]+(?:-[a-z0-9]+)*$" - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "content": { + "type": "string" + }, + "content_type": { + "type": "string" + }, + "encoding": { + "enum": [ + "utf-8", + "base64" + ], + "type": "string" + }, + "path": { + "type": "string" + }, + "size_bytes": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "path", + "content_type", + "size_bytes", + "encoding", + "content" +]
- Changed
list_clusters3 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "clusters": { + "items": { + "properties": { + "created_at": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "is_default": { + "type": "boolean" + }, + "memory_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "description", + "is_default", + "created_at", + "memory_count" + ], + "type": "object" + }, + "type": "array" + } +} - added
Output schema / requiredAdded value: +[ + "clusters" +]
- Changed
list_skills3 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "skills": { + "items": { + "properties": { + "created_at": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "file_count": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "source_agent": { + "type": "string" + }, + "total_bytes": { + "type": "integer" + }, + "version": { + "type": "integer" + } + }, + "required": [ + "slug", + "name", + "description", + "version", + "source_agent", + "file_count", + "total_bytes", + "created_at" + ], + "type": "object" + }, + "type": "array" + } +} - added
Output schema / requiredAdded value: +[ + "skills" +]
- Changed
read_context3 fields changed- removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "clusters": { + "items": { + "properties": { + "created_at": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "is_default": { + "type": "boolean" + }, + "memory_count": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "description", + "is_default", + "created_at", + "memory_count" + ], + "type": "object" + }, + "type": "array" + }, + "display_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "last_updated": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "memories": { + "items": { + "properties": { + "cluster": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "content": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "importance": { + "type": "integer" + }, + "source_agent": { + "type": "string" + }, + "tags": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "content", + "source_agent", + "importance", + "created_at", + "tags" + ], + "type": "object" + }, + "type": "array" + }, + "total_memory_count": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "display_name", + "clusters", + "memories", + "total_memory_count", + "last_updated" +]
- Changed
search_memory9 fields changed- changed
Input schema / properties / cluster / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 50, + "minLength": 1, + "pattern": "^[A-Za-z0-9-]{1,50}$", + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / cluster / descriptionAdded value: +"Optional cluster name to restrict the search." - added
Input schema / properties / query / descriptionAdded value: +"Short, specific keywords describing the memories to find." - added
Input schema / properties / query / maxLengthAdded value: +2000 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / top_k / descriptionAdded value: +"Maximum number of matching memories to return." - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "memories": { + "items": { + "properties": { + "cluster": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "content": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "importance": { + "type": "integer" + }, + "source_agent": { + "type": "string" + }, + "tags": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "content", + "source_agent", + "importance", + "created_at", + "tags" + ], + "type": "object" + }, + "type": "array" + } +} - added
Output schema / requiredAdded value: +[ + "memories" +]
- Changed
upload_skill12 fields changed- changed
Input schema / properties / description / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 500, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / description / descriptionAdded value: +"Optional short description of the skill's purpose." - added
Input schema / properties / name / descriptionAdded value: +"Human-readable skill name containing at least one letter or number." - added
Input schema / properties / name / maxLengthAdded value: +80 - added
Input schema / properties / name / minLengthAdded value: +1 - changed
Input schema / properties / resources / anyOfPrevious value: -[ - { - "additionalProperties": { - "type": "string" - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": { + "type": "string" + }, + "maxProperties": 50, + "type": "object" + }, + { + "type": "null" + } +] - added
Input schema / properties / resources / descriptionAdded value: +"Optional map of up to 50 relative file paths to UTF-8 text contents; total upload limit is 512 KB." - added
Input schema / properties / skill_md / descriptionAdded value: +"Complete UTF-8 SKILL.md text with YAML frontmatter; maximum encoded size is 256 KB." - added
Input schema / properties / skill_md / minLengthAdded value: +1 - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "message": { + "type": "string" + }, + "status": { + "const": "disabled", + "type": "string" + }, + "version": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "status", + "version", + "message" +]
- Changed
write_observation12 fields changed- added
Input schema / properties / cluster / descriptionAdded value: +"Destination cluster name using letters, numbers, or hyphens." - added
Input schema / properties / cluster / maxLengthAdded value: +50 - added
Input schema / properties / cluster / minLengthAdded value: +1 - added
Input schema / properties / cluster / patternAdded value: +"^[A-Za-z0-9-]{1,50}$" - added
Input schema / properties / content / descriptionAdded value: +"The preference, decision, correction, working pattern, or project fact to remember." - added
Input schema / properties / content / maxLengthAdded value: +2000 - added
Input schema / properties / content / minLengthAdded value: +1 - added
Input schema / properties / importance / descriptionAdded value: +"Memory importance from 1 (low) to 5 (critical); use 3 by default." - added
Input schema / properties / tags / descriptionAdded value: +"Optional search tags; at most 10 tags, each no longer than 30 characters." - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / propertiesAdded value: +{ + "status": { + "enum": [ + "saved", + "duplicate" + ], + "type": "string" + } +} - added
Output schema / requiredAdded value: +[ + "status" +]
10 tool updates
- First observed
export_all - First observed
get_cluster - First observed
get_skill - First observed
get_skill_resource - First observed
list_clusters - First observed
list_skills - First observed
read_context - First observed
search_memory - First observed
upload_skill - First observed
write_observation
Publisher details
- Operator
- Sutra is operated by Shivnath Tathe as an independent software product. · Publisher source
- Operator website
- https://sutra.shivnathtathe.com · Publisher source
- Vendor relationship
- First-party · Publisher source
- Trust center
- https://github.com/shivnathtathe/sutra-mcp-integrations/blob/main/docs/security-and-data.md · Publisher source
- Restrictions
- A Sutra account and OAuth authorization or a revocable API key are required. No administrator approval, regional restriction, or paid plan is required.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs115 npm58 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1618 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.