Koskamo

Greener Closet MCP

A read-only MCP server that allows agents to score clothing items based on disclosed fiber content, look up products in the catalog, summarize brand data, find alternatives, and explain material properties without scraping retailer sites.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Greener Closet MCP logo, by Greener ClosetVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Greener Closet
MCP endpoint (Streamable HTTP)
https://greenercloset.com/mcp
Vendor documentation

What you can do with it

  • Score a pasted fiber composition for sustainability and health impact
  • Look up a specific product URL in the Greener Closet catalog
  • Summarize analyzed products for a given brand
  • Find products by type and fiber composition

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
greener-closet 1.0.0
MCP protocol
2025-06-18
Tools
5 advertised
Resources
2 advertised
Resource templates
0 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Greener Closet answers questions about what clothing is made of: a fabric or care label's fiber percentages, a clothing product link, a clothing brand's materials, one fiber such as polyester, modal, Tencel or spandex, and finding clothing with or without certain fibers. It scores clothing by disclosed fibers and does not lab-test garments, so never present a score as proof a garment is safe or free of PFAS, dyes or finishes. Each result includes a markdown link to greenercloset.com. Put that link in your reply as given, so the user can open the full breakdown. For a product not in the catalog, give the analyze-on-site link instead of guessing its composition. Tools: check_fabric_label scores a pasted fiber composition; check_product looks up a product URL; check_brand summarizes a brand's analyzed products; find_alternatives finds analyzed products by type, fiber and brand; explain_fiber explains a fiber.

Tools

5 advertised

check_fabric_label — Check a fabric label
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user gives a garment's fiber composition or care-label text (for example "60% cotton, 40% polyester" or "100% merino wool") and asks whether it's good, sustainable, synthetic, plastic-based or a better choice than another label, for example "my shirt label says 52% organic cotton, 48% recycled polyester. is that good?" or "95% cotton 5% elastane vs 60% cotton 40% polyester, which is better". To compare labels, call it once per label. Returns Greener Closet's 0-100 score, the synthetic share and the main concerns. If the percentages don't add up to 100, it reports the gap instead of a score. Do not use this for a product URL (use check_product) or for a general question about one fiber (use explain_fiber).

check_fabric_label input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "composition"
  ],
  "properties": {
    "composition": {
      "type": "string",
      "maxLength": 1000,
      "minLength": 2,
      "description": "The fiber composition as written on the label, e.g. \"52% organic cotton, 48% recycled polyester\"."
    }
  }
}
check_fabric_label output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "status"
  ],
  "properties": {
    "status": {
      "enum": [
        "scored",
        "incomplete",
        "unrecognized",
        "invalid"
      ],
      "type": "string"
    }
  },
  "additionalProperties": {}
}
check_fabric_label annotations
{
  "title": "Check a fabric label",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_product — Check a clothing product
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user shares a link to a clothing product page and asks what it's made of, whether it contains polyester or other synthetics, whether it's 100% cotton, or how sustainable it is, for example "what is this shirt made of? <link>". Returns Greener Closet's stored fiber breakdown and score when the product is in its catalog. Otherwise it returns a link where the user can analyze the product on greenercloset.com. Do not use this for pasted label text (use check_fabric_label) or for a product described without a URL.

check_product input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "maxLength": 2048,
      "minLength": 8,
      "description": "The full product page URL, e.g. https://www.patagonia.com/product/..."
    }
  }
}
check_product output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "status"
  ],
  "properties": {
    "status": {
      "enum": [
        "found",
        "not_in_catalog",
        "invalid_url"
      ],
      "type": "string"
    }
  },
  "additionalProperties": {}
}
check_product annotations
{
  "title": "Check a clothing product",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
explain_fiber — Explain a fiber
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user asks what a clothing fiber is or whether it's natural, synthetic or a concern to wear, for example "is modal a natural fiber", "is polyester bad for you", "what is Tencel", "is rayon a natural fiber", "is spandex as bad as polyester" or "what is regenerated cellulose". Returns Greener Closet's reviewed guide with sources when one exists, and says plainly when it has only limited information. Do not use this to score a whole garment label (use check_fabric_label).

explain_fiber input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "fiber"
  ],
  "properties": {
    "fiber": {
      "type": "string",
      "maxLength": 80,
      "minLength": 2,
      "description": "One fiber or fiber family, e.g. \"polyester\", \"Tencel\", \"bamboo viscose\", \"regenerated cellulose\"."
    }
  }
}
explain_fiber output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "status"
  ],
  "properties": {
    "status": {
      "enum": [
        "guide",
        "fiber_family",
        "ambiguous",
        "limited",
        "unknown"
      ],
      "type": "string"
    }
  },
  "additionalProperties": {}
}
explain_fiber annotations
{
  "title": "Explain a fiber",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_brand — Check a clothing brand
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user asks about a clothing brand's materials or sustainability, for example "is Vuori sustainable", "is Vuori non-toxic", "does Vuori use PFAS", "is Lululemon mostly polyester" or "what are Quince clothes made of". Returns how the brand's products that Greener Closet has analyzed score, how many contain synthetic fibers, and any sourced claims on file. It never rates the company itself, and it can't say whether a brand uses PFAS finishes. Do not use this for one product (use check_product) or to find other brands (use find_alternatives).

check_brand input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "brand"
  ],
  "properties": {
    "brand": {
      "type": "string",
      "maxLength": 80,
      "minLength": 1,
      "description": "The brand name, e.g. \"Vuori\", \"Pact\", \"Carter's\"."
    }
  }
}
check_brand output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "status"
  ],
  "properties": {
    "status": {
      "enum": [
        "found",
        "no_products",
        "not_found"
      ],
      "type": "string"
    }
  },
  "additionalProperties": {}
}
check_brand annotations
{
  "title": "Check a clothing brand",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_alternatives — Find clothing by fiber content
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants clothing with specific fiber content or an alternative to a brand, for example "leggings like Lululemon without polyester", "Vuori dupes without synthetic fabric", "natural fiber underwear for women", "linen shirts for men with no synthetics" or "polyester-free socks". For a PFAS-free request it can find clothing with no synthetic fibers, but fiber content is not a PFAS test. Returns products Greener Closet has analyzed, highest score first, with their disclosed fiber breakdown. Fiber exclusions only count products whose full composition is disclosed. It doesn't filter by price. Do not use this to check one product or brand (use check_product or check_brand).

find_alternatives input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 8,
      "minimum": 1
    },
    "minScore": {
      "type": "integer",
      "maximum": 100,
      "minimum": 0,
      "description": "Lowest Greener Closet score to include. Defaults to 70."
    },
    "department": {
      "enum": [
        "women",
        "men",
        "kids",
        "baby"
      ],
      "type": "string"
    },
    "productType": {
      "type": "string",
      "maxLength": 60,
      "description": "What kind of clothing, e.g. \"leggings\", \"socks\", \"t-shirt\", \"dress\", \"pajamas\"."
    },
    "replaceBrand": {
      "type": "string",
      "maxLength": 80,
      "description": "A brand the user wants an alternative to; its products are excluded."
    },
    "excludeFibers": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 40,
        "minLength": 2
      },
      "maxItems": 6,
      "description": "Fibers the products must not contain, e.g. [\"polyester\", \"nylon\"]. Recycled versions are excluded too."
    },
    "requireFibers": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 40,
        "minLength": 2
      },
      "maxItems": 3,
      "description": "Fibers the products must contain, e.g. [\"linen\"] or [\"merino wool\"]."
    },
    "excludeAllSynthetics": {
      "type": "boolean",
      "description": "True when the user wants no synthetic fibers at all."
    }
  }
}
find_alternatives output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "status"
  ],
  "properties": {
    "status": {
      "enum": [
        "found",
        "none",
        "invalid"
      ],
      "type": "string"
    }
  },
  "additionalProperties": {}
}
find_alternatives annotations
{
  "title": "Find clothing by fiber content",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

2 advertised

product-cards — Greener Closet product cards

Advertised by the server during the last successful anonymous check.

product-cards URI
ui://greenercloset/product-cards-v2.html

MIME type: text/html;profile=mcp-app

product-cards-legacy-product-cards-v1 — Greener Closet product cards

Advertised by the server during the last successful anonymous check.

product-cards-legacy-product-cards-v1 URI
ui://greenercloset/product-cards-v1.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
771 ms
95th percentile latency
771 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 771 ms · metadata changed · 5 tool(s), 2 resource(s), 0 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http greener-closet-mcp https://greenercloset.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add greener-closet-mcp --url https://greenercloset.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable greener-closet-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "greener-closet-mcp": {
      "url": "https://greenercloset.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "greener-closet-mcp": {
      "type": "streamableHttp",
      "url": "https://greenercloset.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start greener-closet-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "greener-closet-mcp": {
      "type": "http",
      "url": "https://greenercloset.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http greener-closet-mcp https://greenercloset.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "greener-closet-mcp": {
      "url": "https://greenercloset.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "greener-closet-mcp": {
      "serverUrl": "https://greenercloset.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Greener Closet MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Greener Closet MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing