Koskamo

Fit Card MCP

An MCP server that helps men determine the correct shirt size by comparing real garment measurements of shirts they already own against potential new purchases. It provides specific fit recommendations, confidence scores, and links to buy items that match the user's preferred fit profile.

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.

Fit Card MCP logo, by Fit CardVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-02Operated by Fit Card
MCP endpoint (Streamable HTTP)
https://fitcard.ai/mcp
Vendor documentation

What its tools do

3 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

Can change data (1)

3 of 3 have a description · 3 of 3 declare behavior hints · 2 of 3 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to fitcard.ai ·
  • Passed Endpoint is on the registry namespace domain ·
  • Uptime 100% over 90 days
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Determine the correct size to buy for a specific shirt based on existing wardrobe
  • Find new shirts that will fit the user's body measurements
  • Retrieve detailed garment measurements for specific brands and sizes

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
fitcard 1.0.0
MCP protocol negotiated in check
2025-06-18
Tools
3 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

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

Fit Card picks a man's size in any shirt by comparing that shirt's real garment measurements with shirts he already owns that fit. Ask him for 1-5 shirts that fit him well (brand, item, size), then call size_me for a specific shirt or what_to_buy for recommendations. Pass only what he tells you; don't invent measurements. If a shirt of his isn't known yet, tell him he can measure it with his phone at https://fitcard.ai. Report the size Fit Card gives, the one-line reason, and the confidence. If he says a shirt is off somewhere (tight in the belly, too short), pass that as chest, belly or length: shirts that don't fit teach Fit Card as much as ones that do. A size is Fit Card's best estimate, not a guarantee, so mention he should check the shop's return policy.

Tools

3 advertised

size_me — Which size should I buy?
Advertised by the server during the last successful anonymous check.
Advertised read-only

Recommends a size in one shirt for this man, from the shirts he already owns that fit. Returns the size, why (in terms of his own shirts), how it will fit, and a confidence. Tell him exactly the size it gives: it already accounts for his shirts, the fabric and the cut, so don't suggest a different size.

size_me input schema
{
  "type": "object",
  "required": [
    "shirt",
    "my_shirts"
  ],
  "properties": {
    "shirt": {
      "type": "object",
      "required": [
        "brand",
        "item"
      ],
      "properties": {
        "item": {
          "type": "string"
        },
        "brand": {
          "type": "string"
        }
      },
      "description": "The shirt he is thinking of buying."
    },
    "my_shirts": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "brand",
          "item",
          "size"
        ],
        "properties": {
          "fit": {
            "enum": [
              "fits",
              "too big",
              "too small"
            ],
            "type": "string",
            "description": "How it fits him overall. Default \"fits\". Prefer chest and length when he says where it's off."
          },
          "item": {
            "type": "string",
            "description": "The shirt, e.g. \"AIRism Cotton T-Shirt\" or \"golf polo\""
          },
          "size": {
            "type": "string",
            "description": "Size on the tag, e.g. \"L\" or \"XL Tall\""
          },
          "belly": {
            "enum": [
              "too tight",
              "a bit tight",
              "right",
              "a bit loose",
              "too loose"
            ],
            "type": "string",
            "description": "How it fits at the belly, if he said. Many guys find shirts right at the chest and tight at the belly."
          },
          "brand": {
            "type": "string",
            "description": "Brand, e.g. \"Uniqlo\""
          },
          "chest": {
            "enum": [
              "too tight",
              "a bit tight",
              "right",
              "a bit loose",
              "too loose"
            ],
            "type": "string",
            "description": "How it fits through the chest and shoulders, if he said."
          },
          "length": {
            "enum": [
              "too short",
              "a bit short",
              "right",
              "a bit long",
              "too long"
            ],
            "type": "string",
            "description": "How long it is on him, if he said (\"rides up\" is too short)."
          }
        }
      },
      "maxItems": 12,
      "minItems": 1,
      "description": "Shirts he owns, ideally 3-5 that fit him well. Brand, item and size only."
    },
    "suit_size": {
      "type": "string",
      "description": "His suit jacket size off the label, if he knows it, e.g. \"44L\" or \"42 Regular\". Helps with Tall sizes."
    },
    "fit_preference": {
      "enum": [
        "close",
        "standard",
        "relaxed"
      ],
      "type": "string",
      "description": "How he likes shirts to fit, if he said. Default standard."
    },
    "dress_shirt_size": {
      "type": "string",
      "description": "His dress shirt size off the label, if he knows it, e.g. \"17 34/35\" (neck, sleeve). Helps with long sleeves."
    }
  }
}
size_me annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
what_to_buy — What should I buy?
Advertised by the server during the last successful anonymous check.

Builds his Fit Card from the shirts he owns and returns the shirts that will fit him, each in the right size, with a buy link. Also returns a link to his full card on fitcard.ai. Give each shirt in exactly the size listed; a "snugger" or "roomier" note describes how that size fits, not a reason to size up or down.

what_to_buy input schema
{
  "type": "object",
  "required": [
    "my_shirts"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1,
      "description": "How many picks (default 8)."
    },
    "category": {
      "enum": [
        "Tees",
        "Polos",
        "Button-downs",
        "Long sleeves and layers"
      ],
      "type": "string",
      "description": "Optional: only this kind of shirt."
    },
    "my_shirts": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "brand",
          "item",
          "size"
        ],
        "properties": {
          "fit": {
            "enum": [
              "fits",
              "too big",
              "too small"
            ],
            "type": "string",
            "description": "How it fits him overall. Default \"fits\". Prefer chest and length when he says where it's off."
          },
          "item": {
            "type": "string",
            "description": "The shirt, e.g. \"AIRism Cotton T-Shirt\" or \"golf polo\""
          },
          "size": {
            "type": "string",
            "description": "Size on the tag, e.g. \"L\" or \"XL Tall\""
          },
          "belly": {
            "enum": [
              "too tight",
              "a bit tight",
              "right",
              "a bit loose",
              "too loose"
            ],
            "type": "string",
            "description": "How it fits at the belly, if he said. Many guys find shirts right at the chest and tight at the belly."
          },
          "brand": {
            "type": "string",
            "description": "Brand, e.g. \"Uniqlo\""
          },
          "chest": {
            "enum": [
              "too tight",
              "a bit tight",
              "right",
              "a bit loose",
              "too loose"
            ],
            "type": "string",
            "description": "How it fits through the chest and shoulders, if he said."
          },
          "length": {
            "enum": [
              "too short",
              "a bit short",
              "right",
              "a bit long",
              "too long"
            ],
            "type": "string",
            "description": "How long it is on him, if he said (\"rides up\" is too short)."
          }
        }
      },
      "maxItems": 12,
      "minItems": 1,
      "description": "Shirts he owns, ideally 3-5 that fit him well. Brand, item and size only."
    },
    "suit_size": {
      "type": "string",
      "description": "His suit jacket size off the label, if he knows it, e.g. \"44L\" or \"42 Regular\". Helps with Tall sizes."
    },
    "fit_preference": {
      "enum": [
        "close",
        "standard",
        "relaxed"
      ],
      "type": "string",
      "description": "How he likes shirts to fit, if he said. Default standard."
    },
    "dress_shirt_size": {
      "type": "string",
      "description": "His dress shirt size off the label, if he knows it, e.g. \"17 34/35\" (neck, sleeve). Helps with long sleeves."
    }
  }
}
what_to_buy annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
shirt_measurements — Shirt measurements
Advertised by the server during the last successful anonymous check.
Advertised read-only

The real garment measurements of a shirt (chest all the way around and length, in inches) in each size, from the brand's own chart or other checked sources. Not a body-size chart.

shirt_measurements input schema
{
  "type": "object",
  "required": [
    "brand",
    "item"
  ],
  "properties": {
    "item": {
      "type": "string"
    },
    "size": {
      "type": "string",
      "description": "Optional: just this size."
    },
    "brand": {
      "type": "string"
    }
  }
}
shirt_measurements annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

100% (19 of 19 checks answered)

  1. 2026-11-02: 2 of 2 checks answered
  2. 2026-11-03: 4 of 4 checks answered
  3. 2026-11-04: 4 of 4 checks answered
  4. 2026-11-05: 4 of 4 checks answered
  5. 2026-11-06: 4 of 4 checks answered
  6. 2026-11-07: 1 of 1 checks answered

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
6590 ms
95th percentile latency
6590 ms

Maintenance history

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

  • · probe · passed · 6590 ms · metadata changed · 3 tool(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 fit-card-mcp https://fitcard.ai/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 fit-card-mcp --url https://fitcard.ai/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable fit-card-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "fit-card-mcp": {
      "url": "https://fitcard.ai/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "fit-card-mcp": {
      "type": "streamableHttp",
      "url": "https://fitcard.ai/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start fit-card-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "fit-card-mcp": {
      "type": "http",
      "url": "https://fitcard.ai/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 fit-card-mcp https://fitcard.ai/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://fitcard.ai/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": {
    "fit-card-mcp": {
      "serverUrl": "https://fitcard.ai/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Fit Card 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 Fit Card 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