vision

Calibrated vision for AI agents: meal nutrition, personal color, styling reports. x402, no API key.

Should I use this

Quality & Safety

A
Description quality
90%
Schema completeness
86%
Naming quality
87%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'report_pack' description lacks action verbin report_pack

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,645Tokens (tool definitions)
~3.7 KBTypical response size
Significant attention impact (2.85% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "vision": {
      "url": "https://mart402.com/mcp/vision"
    }
  }
}

Remote endpoints

https://mart402.com/mcp/visionstreamable-http

What it can do

Tool inventory

Tools (9)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_catalog

Mart402 product catalog: all products, prices, payment config, error codes, rate limits. Free.

Input Schema

{
  "type": "object",
  "properties": {}
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
🟢get_receipt(receipt_id)

Re-fetch a previously paid result for free by receipt id (every paid response carries receipt_id).

Input Schema

{
  "type": "object",
  "properties": {
    "receipt_id": {
      "type": "string",
      "description": "receipt_id from a paid response (rcpt_...)"
    }
  },
  "required": [
    "receipt_id"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
🟢get_sample(product)

Free recorded sample response for a paid product (from real production runs, marked sample:true) - see the exact response shape before paying anything. Available: document-pipeline, enrich, extract, jp-bonus-net, jp-business-days, jp-company, jp-consumption-tax, jp-crypto-tax, jp-dependent-threshold, jp-mortgage, jp-overtime-wage, jp-payroll-net, jp-payroll-suite, jp-payslip-audit, jp-retirement-tax, jp-social-insurance, meal-vision, ocr, parse, pdf-info, pdf-merge, pdf-pages, portrait-analysis, report-pack, structured, style-profile, style-report, verify.

Input Schema

{
  "type": "object",
  "properties": {
    "product": {
      "type": "string",
      "enum": [
        "document-pipeline",
        "enrich",
        "extract",
        "jp-bonus-net",
        "jp-business-days",
        "jp-company",
        "jp-consumption-tax",
        "jp-crypto-tax",
        "jp-dependent-threshold",
        "jp-mortgage",
        "jp-overtime-wage",
        "jp-payroll-net",
        "jp-payroll-suite",
        "jp-payslip-audit",
        "jp-retirement-tax",
        "jp-social-insurance",
        "meal-vision",
        "ocr",
        "parse",
        "pdf-info",
        "pdf-merge",
        "pdf-pages",
        "portrait-analysis",
        "report-pack",
        "structured",
        "style-profile",
        "style-report",
        "verify"
      ],
      "description": "One of: document-pipeline, enrich, extract, jp-bonus-net, jp-business-days, jp-company, jp-consumption-tax, jp-crypto-tax, jp-dependent-threshold, jp-mortgage, jp-overtime-wage, jp-payroll-net, jp-payroll-suite, jp-payslip-audit, jp-retirement-tax, jp-social-insurance, meal-vision, ocr, parse, pdf-info, pdf-merge, pdf-pages, portrait-analysis, report-pack, structured, style-profile, style-report, verify. Product id (see the enum)"
    }
  },
  "required": [
    "product"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
🟢portrait_precheck(image_url, image_base64)

FREE analyzability check before paying for portrait_analysis: is a face detectable, is the photo quality good enough (clipping/color cast)? Deterministic, no LLM. 10/hour/IP.

Input Schema

{
  "type": "object",
  "properties": {
    "image_url": {
      "type": "string",
      "description": "Absolute http(s) URL of the image (JPEG/PNG/WebP)"
    },
    "image_base64": {
      "type": "string",
      "description": "Base64-encoded image bytes (alternative to image_url)"
    }
  },
  "x-required-one-of": [
    "image_url",
    "image_base64"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
🟢meal_vision(image_url, image_base64, hints, pack_code, x_payment)

Analyze a meal photo to itemized nutrition JSON: dishes, portions, kcal, macros with per-item confidence, reference-object scale calibration, scene-complexity detection, a disclosed calibrated kcal range, PFC balance ratios and alcohol-aware 4/4/9 cross-checks. Calibrated on 30 weighed meals (range contained truth in 26/30). Every call is a 3-run consensus with disclosed spread + item agreement. $0.05/image.

Input Schema

{
  "type": "object",
  "properties": {
    "image_url": {
      "type": "string",
      "description": "Absolute http(s) URL of the image (JPEG/PNG/WebP)"
    },
    "image_base64": {
      "type": "string",
      "description": "Base64-encoded image bytes (alternative to image_url)"
    },
    "hints": {
      "type": "string",
      "description": "cuisine/context hint, e.g. 'Japanese teishoku, small diet portions' - measurably improves accuracy on regional home-style meals"
    },
    "pack_code": {
      "type": "string",
      "description": "retry credit issued after an unbilled failed call (replaces payment)"
    },
    "x_payment": {
      "type": "string",
      "description": "Optional: base64 X-PAYMENT header value (x402 exact scheme, USDC on Base mainnet). Omit it to receive the payment requirements (accepts[] + docs) for this call without being charged."
    }
  },
  "required": [],
  "x-required-one-of": [
    "image_url",
    "image_base64"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
⚪style_profile(image_url, image_base64, images, body_image_url, body_image_base64, ...)

Integrated styling verdict: seasonal color (measured colorimetry consensus) + face-impression zone (published geometry rules) + body frame + integration rules (palette subset, taste, silhouette, modifiers). 1-3 face photos, optional full-body + questionnaire. Flat $0.05/call.

Input Schema

{
  "type": "object",
  "properties": {
    "image_url": {
      "type": "string",
      "description": "Absolute http(s) URL of the image (JPEG/PNG/WebP)"
    },
    "image_base64": {
      "type": "string",
      "description": "Base64-encoded image bytes (alternative to image_url)"
    },
    "images": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Up to 3 objects {image_url | image_base64}"
    },
    "body_image_url": {
      "type": "string",
      "description": "Optional full-body photo URL for frame estimation"
    },
    "body_image_base64": {
      "type": "string",
      "description": "See the product's input spec in /catalog"
    },
    "questionnaire": {
      "type": "object",
      "description": "Optional frame questionnaire answers (see /catalog input spec)"
    },
    "style": {
      "type": "string",
      "enum": [
        "feminine",
        "masculine",
        "neutral"
      ],
      "default": "neutral",
      "description": "One of: feminine, masculine, neutral. Styling context: feminine, masculine or neutral"
    },
    "x_payment": {
      "type": "string",
      "description": "Optional: base64 X-PAYMENT header value (x402 exact scheme, USDC on Base mainnet). Omit it to receive the payment requirements (accepts[] + docs) for this call without being charged."
    }
  },
  "required": [],
  "x-required-one-of": [
    "image_url",
    "image_base64",
    "images"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
⚪style_report(image_url, image_base64, images, style, name, ...)

Client-ready deliverable: the style-profile analysis rendered as a finished English PDF report (palette with color names, style-aware outfit formulas, virtual draping boards with disclosed candidate conflicts, honest confidence) returned as report_pdf_base64 + full profile JSON. For agents serving human end-clients. Flat $2.99/call, or $1.99/unit with a prepaid report_pack credit (pass pack_code).

Input Schema

{
  "type": "object",
  "properties": {
    "image_url": {
      "type": "string",
      "description": "Absolute http(s) URL of the image (JPEG/PNG/WebP)"
    },
    "image_base64": {
      "type": "string",
      "description": "Base64-encoded image bytes (alternative to image_url)"
    },
    "images": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "1-3 face photos"
    },
    "style": {
      "type": "string",
      "enum": [
        "feminine",
        "masculine",
        "neutral"
      ],
      "default": "neutral",
      "description": "One of: feminine, masculine, neutral. Styling context: feminine, masculine or neutral"
    },
    "name": {
      "type": "string",
      "description": "client name printed on the report (same field as REST; client_name is accepted as an alias)"
    },
    "body_image_url": {
      "type": "string",
      "description": "optional full-body photo URL (body-shape layer)"
    },
    "body_image_base64": {
      "type": "string",
      "description": "optional full-body photo as base64"
    },
    "questionnaire": {
      "type": "object",
      "description": "optional answers (see /catalog style-report input)"
    },
    "language": {
      "type": "string",
      "enum": [
        "en",
        "ja"
      ],
      "default": "en",
      "description": "report language"
    },
    "pack_code": {
      "type": "string",
      "description": "prepaid credit from report_pack (replaces payment)"
    },
    "x_payment": {
      "type": "string",
      "description": "Optional: base64 X-PAYMENT header value (x402 exact scheme, USDC on Base mainnet). Omit it to receive the payment requirements (accepts[] + docs) for this call without being charged."
    }
  },
  "required": [],
  "x-required-one-of": [
    "image_url",
    "image_base64",
    "images"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
⚪report_pack(x_payment)

Volume pricing for style_report: one $19.90 payment returns 10 single-use credit codes ($1.99/unit vs $2.99 single, en or ja, no expiry). Treat codes like cash.

Input Schema

{
  "type": "object",
  "properties": {
    "x_payment": {
      "type": "string",
      "description": "Optional: base64 X-PAYMENT header value (x402 exact scheme, USDC on Base mainnet). Omit it to receive the payment requirements (accepts[] + docs) for this call without being charged."
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}
⚪portrait_analysis(image_url, image_base64, images, style, pack_code, ...)

Personal color analysis from 1-3 portraits: measured pixel colorimetry (CIELAB/ITA) cross-checked against vision-model attributes, cross-photo lighting consistency, then a published deterministic rule table gives the 4-season verdict with palette and style advice. No identification; images not stored. Flat $0.05/call.

Input Schema

{
  "type": "object",
  "properties": {
    "image_url": {
      "type": "string",
      "description": "Absolute http(s) URL of the image (JPEG/PNG/WebP)"
    },
    "image_base64": {
      "type": "string",
      "description": "Base64-encoded image bytes (alternative to image_url)"
    },
    "images": {
      "type": "array",
      "description": "up to 3 of {image_url|image_base64}; different lighting recommended",
      "items": {
        "type": "object"
      }
    },
    "style": {
      "type": "string",
      "enum": [
        "feminine",
        "masculine",
        "neutral"
      ],
      "default": "neutral",
      "description": "One of: feminine, masculine, neutral. Styling context: feminine, masculine or neutral"
    },
    "pack_code": {
      "type": "string",
      "description": "retry credit issued after an unbilled failed call (replaces payment)"
    },
    "x_payment": {
      "type": "string",
      "description": "Optional: base64 X-PAYMENT header value (x402 exact scheme, USDC on Base mainnet). Omit it to receive the payment requirements (accepts[] + docs) for this call without being charged."
    }
  },
  "required": [],
  "x-required-one-of": [
    "image_url",
    "image_base64",
    "images"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "integer",
      "description": "HTTP status of the underlying call (200 result, 402 payment terms, 4xx input error)"
    },
    "body": {
      "description": "JSON body of the underlying call (see /samples/{product} for each product's shape)"
    },
    "payment_required": {
      "type": "boolean",
      "description": "true when status is 402: body holds x402 payment terms, not a result. Pay and call again with x_payment"
    },
    "how_to_pay": {
      "type": "string"
    },
    "receipt_id": {
      "type": "string",
      "description": "set on paid results; free re-fetch via get_receipt"
    }
  },
  "required": [
    "status",
    "body"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded9 tools