# Moltline Studio

> Fleet entry point: 22 hosted MCP servers, 160 tools, 110 free. Searches 138 agent skills.

- name: com.moltlinestudio/catalog
- version: 1.2.0
- connection class: R0 (autonomous)
- trust: 84/100 flags: duplicate-repo
- quality: 91/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.moltlinestudio%2Fcatalog
- tools: https://api.protogrid.dev/v1/servers/com.moltlinestudio%2Fcatalog/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "catalog": {
      "type": "http",
      "url": "https://mcp.moltlinestudio.com/catalog"
    }
  }
}
```


## Trust

- hygiene: 60
- liveness: 99
- freshness: 85
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-98% ~updated-38d-ago -duplicate-repo(22 names)
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 91/100 (strong)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 10 of 10 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,760 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 10, about 2,760 tokens to load them all
- tool set hash: 894fb0c0e99f2afebceabff3f3d96d06
- badge: [![protogrid quality](https://protogrid.dev/badge/com.moltlinestudio/catalog.svg)](https://protogrid.dev/servers/com.moltlinestudio/catalog)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://mcp.moltlinestudio.com/catalog (streamable-http, auth none, reachable true, uptime30d 0.97540987)

## Packages

_none_

## Tools (10)

- `get_free_skill`: Load a product's free gateway skill with its complete instructions. FREE.

Typical input {"slug": "inbox-zero-assistant"} returns {"slug": ...,
"skill": "<skill name>", "instructions": "<full skill text>"}.

Returns exactly one skill - the product's free gateway skill - chosen
automatically from the slug, with no plan required. Use when the caller
wants usable instructions immediately. Not for the product's other skills:
those are named and need get_full_skill with a skill_name, which requires
a paid plan. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "unknown slug '<value>'"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
- `get_full_kit`: Load a themed kit and every member product in full. PREMIUM (paid plan).

Typical input {"slug": "founder-kit"} returns {"slug": ..., "name": ...,
"products": [{"slug": ..., "name": ..., "persona": ..., "skills":
[...]}, ...]}.

Returns every member product of one bundle in full, so the payload is
large. Use only after list_kits has confirmed the kit slug. Not for a
single product (get_full_product). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "unknown kit '<value>'"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
- `get_full_persona`: Load a product's complete persona definition. PREMIUM (paid plan).

Typical input {"slug": "inbox-zero-assistant"} returns {"slug": ...,
"persona": "<full persona text>"}.

Returns the persona text alone, with no skill bodies. Use when the caller
needs the product's voice and operating rules only. Not when skills are
also wanted - get_full_product returns persona and every skill in one
call. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "unknown slug '<value>'"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
- `get_full_product`: Load one product in full: persona plus every skill's instructions. PREMIUM (paid plan).

Typical input {"slug": "inbox-zero-assistant"} returns {"slug": ...,
"name": ..., "persona": ..., "skills": [{"name": ..., "instructions":
...}], "free_skill": {...}}.

Returns persona plus every skill for one product. Use when the caller
wants the whole product. Not for a single skill (get_full_skill) and not
for a bundle of products (get_full_kit). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "unknown slug '<value>'"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
- `get_full_skill`: Load one paid skill's complete instructions from a product. PREMIUM (paid plan).

Typical input {"slug": "inbox-zero-assistant", "skill_name": "Deep
Triage"} returns {"slug": ..., "skill": ..., "instructions": "<full
skill text>"}.

Returns one named skill, selected by skill_name. Use after preview_product
has shown the skill list and the caller wants one specific paid skill. Not
for the free gateway skill, which get_free_skill returns with no plan, and
not for every skill at once (get_full_product). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "unknown slug '<value>'"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
- `list_kits`: List the 12 themed kits with pricing and member products. FREE.

Takes no arguments. Returns a list of kit objects, each {"slug": ...,
"name": ..., "price_usd": N, "tagline": ..., "members": ["product-slug",
...], "availability": ...}. Use a kit's slug with get_full_kit (premium).
Kits are not sold standalone on any marketplace: price_usd is the bundle's
reference value, and All-Access is how a caller actually unlocks one.

Use when the caller asks about bundles or bundle pricing. Not for
individual products (search_catalog) and not for a kit's full contents
(get_full_kit). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
- `preview_product`: Preview one product: metadata, persona teaser, and paid-skill teasers. FREE.

Typical input {"slug": "inbox-zero-assistant"} returns {"slug": ...,
"name": ..., "tagline": ..., "persona_preview": ..., "skills":
[{"name": ..., "preview": ...}], "free_skill": ..., "note": ...}.

Returns teasers only, never full text. Use to judge a product before
committing. Not for the complete persona or skill bodies
(get_full_persona, get_full_product), and not when the caller wants
instructions they can act on now (get_free_skill). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "unknown slug '<value>'"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
- `recommend_products`: Recommend catalog products for a need described in plain language. FREE.

Typical input {"need": "help answering customer support emails"} returns
{"need": ..., "recommendations": [{"slug": ..., "name": ..., "why": ...,
"area": ..., "try_free": "<free skill name>"}], "next": "..."}.

Use when the caller describes a problem instead of naming a product;
ranking is by fit to the described need. Not for exact keyword or slug
lookups (search_catalog). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
- `search_catalog`: Search all 138 catalog products by keyword and/or focus area. FREE.

Typical input {"query": "email inbox", "limit": 5} returns a ranked list
of product objects [{"slug": ..., "name": ..., "area": ..., "segment":
..., "tagline": ...}]. An empty query with an area set browses that area.

Use when the caller names a keyword, product, or focus area to look up.
Not for bundles (list_kits) and not for plain-language problem statements,
which recommend_products ranks by fit rather than keyword match. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
- `upgrade_info`: Explain how to unlock full personas, paid skills, and kits. FREE.

Takes no arguments. Returns {"message": ..., "how": ..., "free_tier":
...} describing the upgrade path and what stays free.

Use when a premium tool has been refused or the caller asks what a plan
covers. Not for per-bundle or per-product pricing (list_kits,
preview_product). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
