vision
Calibrated vision for AI agents: meal nutrition, personal color, styling reports. x402, no API key.
사용해야 할까요
품질 및 안전성
발견 사항 (1)
- LOWreport_pack에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"vision": {
"url": "https://mart402.com/mcp/vision"
}
}
}원격 엔드포인트
https://mart402.com/mcp/visionstreamable-http할 수 있는 일
도구 목록
도구 (9)
🟢get_catalog
Mart402 product catalog: all products, prices, payment config, error codes, rate limits. Free.
입력 스키마
{
"type": "object",
"properties": {}
}출력 스키마
{
"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).
입력 스키마
{
"type": "object",
"properties": {
"receipt_id": {
"type": "string",
"description": "receipt_id from a paid response (rcpt_...)"
}
},
"required": [
"receipt_id"
]
}출력 스키마
{
"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.
입력 스키마
{
"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"
]
}출력 스키마
{
"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.
입력 스키마
{
"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"
]
}출력 스키마
{
"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.
입력 스키마
{
"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"
]
}출력 스키마
{
"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.
입력 스키마
{
"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"
]
}출력 스키마
{
"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).
입력 스키마
{
"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"
]
}출력 스키마
{
"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.
입력 스키마
{
"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": []
}출력 스키마
{
"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.
입력 스키마
{
"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"
]
}출력 스키마
{
"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"
]
}커뮤니티
증거