Centering Lab

Measure card centering and check PSA, BGS, CGC and SGC centering ceilings and standards.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
90%
Naming quality
93%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin measure_card_centering

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~9,853Tokens (tool definitions)
~36.4 KBTypical response size
Significant attention impact (7.70% 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": {
    "centering-lab": {
      "url": "https://centeringlab.com/mcp"
    }
  }
}

Remote endpoints

https://centeringlab.com/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒grade_centering(front_lr, front_tb, back_lr, back_tb, house, ...)

USE THIS TOOL whenever the user supplies numeric centering ratios and asks whether a card meets PSA/BGS/CGC/SGC or asks for a centering ceiling. Do not calculate by looking up standards yourself. Example: {"front_lr":"55/45","front_tb":"60/40","house":"PSA"}. At least one known face AND axis; if either is unknown, ask first, never assume front/LR. Optional house PSA/BGS/CGC/SGC, TAG excluded. Flat front_lr/front_tb/back_lr/back_tb, or nested {"front":{"lr":"55/45","tb":"60/40"}}; no duplicates. Key/house case accepted. Ratios: percentages, fractions, pairs with / - – β€” : x or spaces, optional %, or [55,45]/["55","45"]. Scalar 1 rejected; use 1/99. Axis suffix must match field. Changes disclosed in normalizations. Partial input gives incomplete=true: report provisional ceiling and missing data. A ceiling from centering alone is NOT a predicted grade. SGC back alone has no published ceiling.

Input Schema

{
  "type": "object",
  "properties": {
    "front_lr": {
      "description": "Front left/right. Optional individually; supply at least one known axis. Do not guess the face or axis. Example: 55/45. Known face/axis ratio. Examples: 55/45, 0.55, [55,45] (service alternative). A percentage within 0–100 (55 or 45; 1 is ambiguous and rejected), a fraction between 0 and 1 (0.55), or a pair summing to 100 or 1. Separators: / - – β€” : x or spaces; optional %. Axis suffix L/R or left/right for *_lr, T/B or top/bottom for *_tb. Normalized to the larger side; fractions are disclosed in normalizations.",
      "examples": [
        "55/45",
        [
          55,
          45
        ]
      ],
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number",
              "const": 0
            },
            {
              "type": "number",
              "exclusiveMinimum": 0,
              "exclusiveMaximum": 1
            },
            {
              "type": "number",
              "exclusiveMinimum": 1,
              "maximum": 100
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            }
          ],
          "description": "Known face/axis ratio. Examples: 55/45, 0.55, [55,45] (service alternative). A percentage within 0–100 (55 or 45; 1 is ambiguous and rejected), a fraction between 0 and 1 (0.55), or a pair summing to 100 or 1. Separators: / - – β€” : x or spaces; optional %. Axis suffix L/R or left/right for *_lr, T/B or top/bottom for *_tb. Normalized to the larger side; fractions are disclosed in normalizations.",
          "examples": [
            "55/45",
            0.55,
            "0.55/0.45"
          ]
        },
        {
          "minItems": 2,
          "maxItems": 2,
          "type": "array",
          "items": {
            "type": [
              "number",
              "string"
            ]
          }
        }
      ]
    },
    "front_tb": {
      "description": "Front top/bottom. Optional individually; supply at least one known axis. Do not guess the face or axis. Example: 55/45. Known face/axis ratio. Examples: 55/45, 0.55, [55,45] (service alternative). A percentage within 0–100 (55 or 45; 1 is ambiguous and rejected), a fraction between 0 and 1 (0.55), or a pair summing to 100 or 1. Separators: / - – β€” : x or spaces; optional %. Axis suffix L/R or left/right for *_lr, T/B or top/bottom for *_tb. Normalized to the larger side; fractions are disclosed in normalizations.",
      "examples": [
        "60/40",
        [
          60,
          40
        ]
      ],
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number",
              "const": 0
            },
            {
              "type": "number",
              "exclusiveMinimum": 0,
              "exclusiveMaximum": 1
            },
            {
              "type": "number",
              "exclusiveMinimum": 1,
              "maximum": 100
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            }
          ],
          "description": "Known face/axis ratio. Examples: 55/45, 0.55, [55,45] (service alternative). A percentage within 0–100 (55 or 45; 1 is ambiguous and rejected), a fraction between 0 and 1 (0.55), or a pair summing to 100 or 1. Separators: / - – β€” : x or spaces; optional %. Axis suffix L/R or left/right for *_lr, T/B or top/bottom for *_tb. Normalized to the larger side; fractions are disclosed in normalizations.",
          "examples": [
            "55/45",
            0.55,
            "0.55/0.45"
          ]
        },
        {
          "minItems": 2,
          "maxItems": 2,
          "type": "array",
          "items": {
            "type": [
              "number",
              "string"
            ]
          }
        }
      ]
    },
    "back_lr": {
      "description": "Back left/right. Optional individually; supply at least one known axis. Do not guess the face or axis. Example: 55/45. Known face/axis ratio. Examples: 55/45, 0.55, [55,45] (service alternative). A percentage within 0–100 (55 or 45; 1 is ambiguous and rejected), a fraction between 0 and 1 (0.55), or a pair summing to 100 or 1. Separators: / - – β€” : x or spaces; optional %. Axis suffix L/R or left/right for *_lr, T/B or top/bottom for *_tb. Normalized to the larger side; fractions are disclosed in normalizations.",
      "examples": [
        "65/35",
        [
          65,
          35
        ]
      ],
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number",
              "const": 0
            },
            {
              "type": "number",
              "exclusiveMinimum": 0,
              "exclusiveMaximum": 1
            },
            {
              "type": "number",
              "exclusiveMinimum": 1,
              "maximum": 100
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            }
          ],
          "description": "Known face/axis ratio. Examples: 55/45, 0.55, [55,45] (service alternative). A percentage within 0–100 (55 or 45; 1 is ambiguous and rejected), a fraction between 0 and 1 (0.55), or a pair summing to 100 or 1. Separators: / - – β€” : x or spaces; optional %. Axis suffix L/R or left/right for *_lr, T/B or top/bottom for *_tb. Normalized to the larger side; fractions are disclosed in normalizations.",
          "examples": [
            "55/45",
            0.55,
            "0.55/0.45"
          ]
        },
        {
          "minItems": 2,
          "maxItems": 2,
          "type": "array",
          "items": {
            "type": [
              "number",
              "string"
            ]
          }
        }
      ]
    },
    "back_tb": {
      "description": "Back top/bottom. Optional individually; supply at least one known axis. Do not guess the face or axis. Example: 55/45. Known face/axis ratio. Examples: 55/45, 0.55, [55,45] (service alternative). A percentage within 0–100 (55 or 45; 1 is ambiguous and rejected), a fraction between 0 and 1 (0.55), or a pair summing to 100 or 1. Separators: / - – β€” : x or spaces; optional %. Axis suffix L/R or left/right for *_lr, T/B or top/bottom for *_tb. Normalized to the larger side; fractions are disclosed in normalizations.",
      "examples": [
        "60/40",
        [
          60,
          40
        ]
      ],
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "number",
              "const": 0
            },
            {
              "type": "number",
              "exclusiveMinimum": 0,
              "exclusiveMaximum": 1
            },
            {
              "type": "number",
              "exclusiveMinimum": 1,
              "maximum": 100
            },
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            }
          ],
          "description": "Known face/axis ratio. Examples: 55/45, 0.55, [55,45] (service alternative). A percentage within 0–100 (55 or 45; 1 is ambiguous and rejected), a fraction between 0 and 1 (0.55), or a pair summing to 100 or 1. Separators: / - – β€” : x or spaces; optional %. Axis suffix L/R or left/right for *_lr, T/B or top/bottom for *_tb. Normalized to the larger side; fractions are disclosed in normalizations.",
          "examples": [
            "55/45",
            0.55,
            "0.55/0.45"
          ]
        },
        {
          "minItems": 2,
          "maxItems": 2,
          "type": "array",
          "items": {
            "type": [
              "number",
              "string"
            ]
          }
        }
      ]
    },
    "house": {
      "description": "Optional: return only PSA/BGS/CGC/SGC. Case/outer spaces accepted. TAG excluded; never substitute a different house. Example: PSA.",
      "examples": [
        "PSA"
      ],
      "type": "string",
      "enum": [
        "PSA",
        "BGS",
        "CGC",
        "SGC"
      ]
    },
    "front": {
      "type": "object",
      "properties": {
        "lr": {
          "description": "Known left/right ratio. Example: 55/45.",
          "examples": [
            "55/45"
          ],
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number",
                  "const": 0
                },
                {
                  "type": "number",
                  "exclusiveMinimum": 0,
                  "exclusiveMaximum": 1
                },
                {
                  "type": "number",
                  "exclusiveMinimum": 1,
                  "maximum": 100
                },
                {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 80
                }
              ],
              "description": "Known face/axis ratio. Examples: 55/45, 0.55, [55,45] (service alternative). A percentage within 0–100 (55 or 45; 1 is ambiguous and rejected), a fraction between 0 and 1 (0.55), or a pair summing to 100 or 1. Separators: / - – β€” : x or spaces; optional %. Axis suffix L/R or left/right for *_lr, T/B or top/bottom for *_tb. Normalized to the larger side; fractions are disclosed in normalizations.",
              "examples": [
                "55/45",
                0.55,
                "0.55/0.45"
              ]
            },
            {
              "minItems": 2,
              "maxItems": 2,
              "type": "array",
              "items": {
                "type": [
                  "number",
                  "string"
                ]
              }
            }
          ]
        },
        "tb": {
          "description": "Known top/bottom ratio. Example: 60/40.",
          "examples": [
            "60/40"
          ],
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number",
                  "const": 0
                },
                {
                  "type": "number",
                  "exclusiveMinimum": 0,
                  "exclusiveMaximum": 1
                },
                {
                  "type": "number",
                  "exclusiveMinimum": 1,
                  "maximum": 100
                },
                {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 80
                }
              ],
              "description": "Known face/axis ratio. Examples: 55/45, 0.55, [55,45] (service alternative). A percentage within 0–100 (55 or 45; 1 is ambiguous and rejected), a fraction between 0 and 1 (0.55), or a pair summing to 100 or 1. Separators: / - – β€” : x or spaces; optional %. Axis suffix L/R or left/right for *_lr, T/B or top/bottom for *_tb. Normalized to the larger side; fractions are disclosed in normalizations.",
              "examples": [
                "55/45",
                0.55,
                "0.55/0.45"
              ]
            },
            {
              "minItems": 2,
              "maxItems": 2,
              "type": "array",
              "items": {
                "type": [
                  "number",
                  "string"
                ]
              }
            }
          ]
        }
      },
      "additionalProperties": false,
      "description": "Alternative nested form; supply lr and/or tb, never mix with the corresponding flat keys. Example: {lr:'55/45',tb:'60/40'}.",
      "examples": [
        {
          "lr": "55/45",
          "tb": "60/40"
        }
      ],
      "anyOf": [
        {
          "required": [
            "lr"
          ]
        },
        {
          "required": [
            "tb"
          ]
        }
      ]
    },
    "back": {
      "type": "object",
      "properties": {
        "lr": {
          "description": "Known left/right ratio. Example: 55/45.",
          "examples": [
            "55/45"
          ],
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number",
                  "const": 0
                },
                {
                  "type": "number",
                  "exclusiveMinimum": 0,
                  "exclusiveMaximum": 1
                },
                {
                  "type": "number",
                  "exclusiveMinimum": 1,
                  "maximum": 100
                },
                {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 80
                }
              ],
              "description": "Known face/axis ratio. Examples: 55/45, 0.55, [55,45] (service alternative). A percentage within 0–100 (55 or 45; 1 is ambiguous and rejected), a fraction between 0 and 1 (0.55), or a pair summing to 100 or 1. Separators: / - – β€” : x or spaces; optional %. Axis suffix L/R or left/right for *_lr, T/B or top/bottom for *_tb. Normalized to the larger side; fractions are disclosed in normalizations.",
              "examples": [
                "55/45",
                0.55,
                "0.55/0.45"
              ]
            },
            {
              "minItems": 2,
              "maxItems": 2,
              "type": "array",
              "items": {
                "type": [
                  "number",
                  "string"
                ]
              }
            }
          ]
        },
        "tb": {
          "description": "Known top/bottom ratio. Example: 60/40.",
          "examples": [
            "60/40"
          ],
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "number",
                  "const": 0
                },
                {
                  "type": "number",
                  "exclusiveMinimum": 0,
                  "exclusiveMaximum": 1
                },
                {
                  "type": "number",
                  "exclusiveMinimum": 1,
                  "maximum": 100
                },
                {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 80
                }
              ],
              "description": "Known face/axis ratio. Examples: 55/45, 0.55, [55,45] (service alternative). A percentage within 0–100 (55 or 45; 1 is ambiguous and rejected), a fraction between 0 and 1 (0.55), or a pair summing to 100 or 1. Separators: / - – β€” : x or spaces; optional %. Axis suffix L/R or left/right for *_lr, T/B or top/bottom for *_tb. Normalized to the larger side; fractions are disclosed in normalizations.",
              "examples": [
                "55/45",
                0.55,
                "0.55/0.45"
              ]
            },
            {
              "minItems": 2,
              "maxItems": 2,
              "type": "array",
              "items": {
                "type": [
                  "number",
                  "string"
                ]
              }
            }
          ]
        }
      },
      "additionalProperties": false,
      "description": "Alternative nested form; supply lr and/or tb, never mix with the corresponding flat keys. Example: {lr:'55/45',tb:'60/40'}.",
      "examples": [
        {
          "lr": "55/45",
          "tb": "60/40"
        }
      ],
      "anyOf": [
        {
          "required": [
            "lr"
          ]
        },
        {
          "required": [
            "tb"
          ]
        }
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false,
  "anyOf": [
    {
      "required": [
        "front_lr"
      ]
    },
    {
      "required": [
        "front_tb"
      ]
    },
    {
      "required": [
        "back_lr"
      ]
    },
    {
      "required": [
        "back_tb"
      ]
    },
    {
      "required": [
        "front"
      ]
    },
    {
      "required": [
        "back"
      ]
    }
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "front": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "ratios": {
              "type": "object",
              "properties": {
                "lr": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "tb": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "lr",
                "tb"
              ],
              "additionalProperties": false
            },
            "missing_axes": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "lr",
                  "tb"
                ]
              }
            },
            "ceilings": {
              "type": "object",
              "properties": {
                "PSA": {
                  "type": "object",
                  "properties": {
                    "maximum_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "rank": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "limiting_face": {
                      "type": "string",
                      "enum": [
                        "front",
                        "back"
                      ],
                      "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
                      "examples": [
                        "front",
                        "back"
                      ]
                    },
                    "limiting_axis": {
                      "type": "string",
                      "enum": [
                        "lr",
                        "tb"
                      ]
                    },
                    "distance_to_next": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "borderline": {
                      "type": "boolean"
                    },
                    "unconstrained": {
                      "type": "boolean"
                    },
                    "source_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "standard_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "source": {
                      "type": "string"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "verified": {
                      "type": "string"
                    },
                    "verification": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "maximum_grade",
                    "label",
                    "rank",
                    "limiting_face",
                    "limiting_axis",
                    "distance_to_next",
                    "next_grade",
                    "next_label",
                    "borderline",
                    "unconstrained",
                    "source_status",
                    "standard_status",
                    "source",
                    "sources",
                    "verified",
                    "verification"
                  ],
                  "additionalProperties": false
                },
                "BGS": {
                  "type": "object",
                  "properties": {
                    "maximum_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "rank": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "limiting_face": {
                      "type": "string",
                      "enum": [
                        "front",
                        "back"
                      ],
                      "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
                      "examples": [
                        "front",
                        "back"
                      ]
                    },
                    "limiting_axis": {
                      "type": "string",
                      "enum": [
                        "lr",
                        "tb"
                      ]
                    },
                    "distance_to_next": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "borderline": {
                      "type": "boolean"
                    },
                    "unconstrained": {
                      "type": "boolean"
                    },
                    "source_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "standard_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "source": {
                      "type": "string"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "verified": {
                      "type": "string"
                    },
                    "verification": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "maximum_grade",
                    "label",
                    "rank",
                    "limiting_face",
                    "limiting_axis",
                    "distance_to_next",
                    "next_grade",
                    "next_label",
                    "borderline",
                    "unconstrained",
                    "source_status",
                    "standard_status",
                    "source",
                    "sources",
                    "verified",
                    "verification"
                  ],
                  "additionalProperties": false
                },
                "CGC": {
                  "type": "object",
                  "properties": {
                    "maximum_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "rank": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "limiting_face": {
                      "type": "string",
                      "enum": [
                        "front",
                        "back"
                      ],
                      "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
                      "examples": [
                        "front",
                        "back"
                      ]
                    },
                    "limiting_axis": {
                      "type": "string",
                      "enum": [
                        "lr",
                        "tb"
                      ]
                    },
                    "distance_to_next": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "borderline": {
                      "type": "boolean"
                    },
                    "unconstrained": {
                      "type": "boolean"
                    },
                    "source_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "standard_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "source": {
                      "type": "string"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "verified": {
                      "type": "string"
                    },
                    "verification": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "maximum_grade",
                    "label",
                    "rank",
                    "limiting_face",
                    "limiting_axis",
                    "distance_to_next",
                    "next_grade",
                    "next_label",
                    "borderline",
                    "unconstrained",
                    "source_status",
                    "standard_status",
                    "source",
                    "sources",
                    "verified",
                    "verification"
                  ],
                  "additionalProperties": false
                },
                "SGC": {
                  "type": "object",
                  "properties": {
                    "maximum_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "rank": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "limiting_face": {
                      "type": "string",
                      "enum": [
                        "front",
                        "back"
                      ],
                      "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
                      "examples": [
                        "front",
                        "back"
                      ]
                    },
                    "limiting_axis": {
                      "type": "string",
                      "enum": [
                        "lr",
                        "tb"
                      ]
                    },
                    "distance_to_next": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "borderline": {
                      "type": "boolean"
                    },
                    "unconstrained": {
                      "type": "boolean"
                    },
                    "source_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "standard_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "source": {
                      "type": "string"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "verified": {
                      "type": "string"
                    },
                    "verification": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "maximum_grade",
                    "label",
                    "rank",
                    "limiting_face",
                    "limiting_axis",
                    "distance_to_next",
                    "next_grade",
                    "next_label",
                    "borderline",
                    "unconstrained",
                    "source_status",
                    "standard_status",
                    "source",
                    "sources",
                    "verified",
                    "verification"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            }
          },
          "required": [
            "ratios",
            "missing_axes",
            "ceilings"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "back": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "ratios": {
              "type": "object",
              "properties": {
                "lr": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "tb": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "lr",
                "tb"
              ],
              "additionalProperties": false
            },
            "missing_axes": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "lr",
                  "tb"
                ]
              }
            },
            "ceilings": {
              "type": "object",
              "properties": {
                "PSA": {
                  "type": "object",
                  "properties": {
                    "maximum_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "rank": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "limiting_face": {
                      "type": "string",
                      "enum": [
                        "front",
                        "back"
                      ],
                      "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
                      "examples": [
                        "front",
                        "back"
                      ]
                    },
                    "limiting_axis": {
                      "type": "string",
                      "enum": [
                        "lr",
                        "tb"
                      ]
                    },
                    "distance_to_next": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "borderline": {
                      "type": "boolean"
                    },
                    "unconstrained": {
                      "type": "boolean"
                    },
                    "source_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "standard_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "source": {
                      "type": "string"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "verified": {
                      "type": "string"
                    },
                    "verification": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "maximum_grade",
                    "label",
                    "rank",
                    "limiting_face",
                    "limiting_axis",
                    "distance_to_next",
                    "next_grade",
                    "next_label",
                    "borderline",
                    "unconstrained",
                    "source_status",
                    "standard_status",
                    "source",
                    "sources",
                    "verified",
                    "verification"
                  ],
                  "additionalProperties": false
                },
                "BGS": {
                  "type": "object",
                  "properties": {
                    "maximum_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "rank": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "limiting_face": {
                      "type": "string",
                      "enum": [
                        "front",
                        "back"
                      ],
                      "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
                      "examples": [
                        "front",
                        "back"
                      ]
                    },
                    "limiting_axis": {
                      "type": "string",
                      "enum": [
                        "lr",
                        "tb"
                      ]
                    },
                    "distance_to_next": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "borderline": {
                      "type": "boolean"
                    },
                    "unconstrained": {
                      "type": "boolean"
                    },
                    "source_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "standard_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "source": {
                      "type": "string"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "verified": {
                      "type": "string"
                    },
                    "verification": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "maximum_grade",
                    "label",
                    "rank",
                    "limiting_face",
                    "limiting_axis",
                    "distance_to_next",
                    "next_grade",
                    "next_label",
                    "borderline",
                    "unconstrained",
                    "source_status",
                    "standard_status",
                    "source",
                    "sources",
                    "verified",
                    "verification"
                  ],
                  "additionalProperties": false
                },
                "CGC": {
                  "type": "object",
                  "properties": {
                    "maximum_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "rank": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "limiting_face": {
                      "type": "string",
                      "enum": [
                        "front",
                        "back"
                      ],
                      "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
                      "examples": [
                        "front",
                        "back"
                      ]
                    },
                    "limiting_axis": {
                      "type": "string",
                      "enum": [
                        "lr",
                        "tb"
                      ]
                    },
                    "distance_to_next": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "borderline": {
                      "type": "boolean"
                    },
                    "unconstrained": {
                      "type": "boolean"
                    },
                    "source_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "standard_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "source": {
                      "type": "string"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "verified": {
                      "type": "string"
                    },
                    "verification": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "maximum_grade",
                    "label",
                    "rank",
                    "limiting_face",
                    "limiting_axis",
                    "distance_to_next",
                    "next_grade",
                    "next_label",
                    "borderline",
                    "unconstrained",
                    "source_status",
                    "standard_status",
                    "source",
                    "sources",
                    "verified",
                    "verification"
                  ],
                  "additionalProperties": false
                },
                "SGC": {
                  "type": "object",
                  "properties": {
                    "maximum_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "rank": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "limiting_face": {
                      "type": "string",
                      "enum": [
                        "front",
                        "back"
                      ],
                      "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
                      "examples": [
                        "front",
                        "back"
                      ]
                    },
                    "limiting_axis": {
                      "type": "string",
                      "enum": [
                        "lr",
                        "tb"
                      ]
                    },
                    "distance_to_next": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_grade": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "next_label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "borderline": {
                      "type": "boolean"
                    },
                    "unconstrained": {
                      "type": "boolean"
                    },
                    "source_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "standard_status": {
                      "type": "string",
                      "enum": [
                        "official",
                        "interpreted",
                        "approximate"
                      ]
                    },
                    "source": {
                      "type": "string"
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "verified": {
                      "type": "string"
                    },
                    "verification": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "maximum_grade",
                    "label",
                    "rank",
                    "limiting_face",
                    "limiting_axis",
                    "distance_to_next",
                    "next_grade",
                    "next_label",
                    "borderline",
                    "unconstrained",
                    "source_status",
                    "standard_status",
                    "source",
                    "sources",
                    "verified",
                    "verification"
                  ],
                  "additionalProperties": false
                }
              },
              "additionalProperties": false
            }
          },
          "required": [
            "ratios",
            "missing_axes",
            "ceilings"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "combined": {
      "type": "object",
      "properties": {
        "PSA": {
          "type": "object",
          "properties": {
            "maximum_grade": {
              "type": [
                "number",
                "null"
              ]
            },
            "label": {
              "type": [
                "string",
                "null"
              ]
            },
            "rank": {
              "type": [
                "number",
                "null"
              ]
            },
            "limiting_face": {
              "type": "string",
              "enum": [
                "front",
                "back"
              ],
              "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
              "examples": [
                "front",
                "back"
              ]
            },
            "limiting_axis": {
              "type": "string",
              "enum": [
                "lr",
                "tb"
              ]
            },
            "distance_to_next": {
              "type": [
                "number",
                "null"
              ]
            },
            "next_grade": {
              "type": [
                "number",
                "null"
              ]
            },
            "next_label": {
              "type": [
                "string",
                "null"
              ]
            },
            "borderline": {
              "type": "boolean"
            },
            "unconstrained": {
              "type": "boolean"
            },
            "source_status": {
              "type": "string",
              "enum": [
                "official",
                "interpreted",
                "approximate"
              ]
            },
            "standard_status": {
              "type": "string",
              "enum": [
                "official",
                "interpreted",
                "approximate"
              ]
            },
            "source": {
              "type": "string"
            },
            "sources": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "verified": {
              "type": "string"
            },
            "verification": {
              "type": "string"
            }
          },
          "required": [
            "maximum_grade",
            "label",
            "rank",
            "limiting_face",
            "limiting_axis",
            "distance_to_next",
            "next_grade",
            "next_label",
            "borderline",
            "unconstrained",
            "source_status",
            "standard_status",
            "source",
            "sources",
            "verified",
            "verification"
          ],
          "additionalProperties": false
        },
        "BGS": {
          "type": "object",
          "properties": {
            "maximum_grade": {
              "type": [
                "number",
                "null"
              ]
            },
            "label": {
              "type": [
                "string",
                "null"
              ]
            },
            "rank": {
              "type": [
                "number",
                "null"
              ]
            },
            "limiting_face": {
              "type": "string",
              "enum": [
                "front",
                "back"
              ],
              "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
              "examples": [
                "front",
                "back"
              ]
            },
            "limiting_axis": {
              "type": "string",
              "enum": [
                "lr",
                "tb"
              ]
            },
            "distance_to_next": {
              "type": [
                "number",
                "null"
              ]
            },
            "next_grade": {
              "type": [
                "number",
                "null"
              ]
            },
            "next_label": {
              "type": [
                "string",
                "null"
              ]
            },
            "borderline": {
              "type": "boolean"
            },
            "unconstrained": {
              "type": "boolean"
            },
            "source_status": {
              "type": "string",
              "enum": [
                "official",
                "interpreted",
                "approximate"
              ]
            },
            "standard_status": {
              "type": "string",
              "enum": [
                "official",
                "interpreted",
                "approximate"
              ]
            },
            "source": {
              "type": "string"
            },
            "sources": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "verified": {
              "type": "string"
            },
            "verification": {
              "type": "string"
            }
          },
          "required": [
            "maximum_grade",
            "label",
            "rank",
            "limiting_face",
            "limiting_axis",
            "distance_to_next",
            "next_grade",
            "next_label",
            "borderline",
            "unconstrained",
            "source_status",
            "standard_status",
            "source",
            "sources",
            "verified",
            "verification"
          ],
          "additionalProperties": false
        },
        "CGC": {
          "type": "object",
          "properties": {
            "maximum_grade": {
              "type": [
                "number",
                "null"
              ]
            },
            "label": {
              "type": [
                "string",
                "null"
              ]
            },
            "rank": {
              "type": [
                "number",
                "null"
              ]
            },
            "limiting_face": {
              "type": "string",
              "enum": [
                "front",
                "back"
              ],
              "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
              "examples": [
                "front",
                "back"
              ]
            },
            "limiting_axis": {
              "type": "string",
              "enum": [
                "lr",
                "tb"
              ]
            },
            "distance_to_next": {
              "type": [
                "number",
                "null"
              ]
            },
            "next_grade": {
              "type": [
                "number",
                "null"
              ]
            },
            "next_label": {
              "type": [
                "string",
                "null"
              ]
            },
            "borderline": {
              "type": "boolean"
            },
            "unconstrained": {
              "type": "boolean"
            },
            "source_status": {
              "type": "string",
              "enum": [
                "official",
                "interpreted",
                "approximate"
              ]
            },
            "standard_status": {
              "type": "string",
              "enum": [
                "official",
                "interpreted",
                "approximate"
              ]
            },
            "source": {
              "type": "string"
            },
            "sources": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "verified": {
              "type": "string"
            },
            "verification": {
              "type": "string"
            }
          },
          "required": [
            "maximum_grade",
            "label",
            "rank",
            "limiting_face",
            "limiting_axis",
            "distance_to_next",
            "next_grade",
            "next_label",
            "borderline",
            "unconstrained",
            "source_status",
            "standard_status",
            "source",
            "sources",
            "verified",
            "verification"
          ],
          "additionalProperties": false
        },
        "SGC": {
          "type": "object",
          "properties": {
            "maximum_grade": {
              "type": [
                "number",
                "null"
              ]
            },
            "label": {
              "type": [
                "string",
                "null"
              ]
            },
            "rank": {
              "type": [
                "number",
                "null"
              ]
            },
            "limiting_face": {
              "type": "string",
              "enum": [
                "front",
                "back"
              ],
              "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
              "examples": [
                "front",
                "back"
              ]
            },
            "limiting_axis": {
              "type": "string",
              "enum": [
                "lr",
                "tb"
              ]
            },
            "distance_to_next": {
              "type": [
                "number",
                "null"
              ]
            },
            "next_grade": {
              "type": [
                "number",
                "null"
              ]
            },
            "next_label": {
              "type": [
                "string",
                "null"
              ]
            },
            "borderline": {
              "type": "boolean"
            },
            "unconstrained": {
              "type": "boolean"
            },
            "source_status": {
              "type": "string",
              "enum": [
                "official",
                "interpreted",
                "approximate"
              ]
            },
            "standard_status": {
              "type": "string",
              "enum": [
                "official",
                "interpreted",
                "approximate"
              ]
            },
            "source": {
              "type": "string"
            },
            "sources": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "verified": {
              "type": "string"
            },
            "verification": {
              "type": "string"
            }
          },
          "required": [
            "maximum_grade",
            "label",
            "rank",
            "limiting_face",
            "limiting_axis",
            "distance_to_next",
            "next_grade",
            "next_label",
            "borderline",
            "unconstrained",
            "source_status",
            "standard_status",
            "source",
            "sources",
            "verified",
            "verification"
          ],
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "normalizations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "input": {
            "type": [
              "number",
              "string"
            ]
          },
          "ratio": {
            "type": "string"
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "field",
          "note"
        ],
        "additionalProperties": false
      }
    },
    "incomplete": {
      "type": "boolean"
    },
    "missing_faces": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "front",
          "back"
        ],
        "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
        "examples": [
          "front",
          "back"
        ]
      }
    },
    "summary": {
      "type": "string"
    },
    "disclaimer": {
      "type": "string"
    }
  },
  "required": [
    "front",
    "back",
    "combined",
    "normalizations",
    "incomplete",
    "missing_faces",
    "summary",
    "disclaimer"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟒get_centering_standards(house, face)

USE ONLY for questions about published THRESHOLDS, tolerance, rules or SOURCES without grading the user's supplied numeric ratios. For PSA 10 compatibility with supplied ratios use grade_centering instead; it applies rounding and house-specific rules. If face/axis is unknown, ask first without any call. Example: {"house":"BGS","face":"back"}; fields optional, {} returns all. Houses PSA/BGS/CGC/SGC (case accepted), TAG excluded: explain proprietary assessment; never substitute another house. Face front/back in English; case/spaces accepted, reverse/obverse and translations rejected. SGC back has empty bands, no published table or ceiling; never invent one. Returns official/interpreted/approximate status, sources and verification. Not a final-grade prediction.

Input Schema

{
  "type": "object",
  "properties": {
    "house": {
      "type": "string",
      "enum": [
        "PSA",
        "BGS",
        "CGC",
        "SGC"
      ],
      "description": "Grading house: PSA, BGS, CGC or SGC; TAG is excluded. Case/outer whitespace accepted by the service. Example: PSA (psa also accepted).",
      "examples": [
        "PSA",
        "BGS"
      ]
    },
    "face": {
      "type": "string",
      "enum": [
        "front",
        "back"
      ],
      "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
      "examples": [
        "front",
        "back"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "normalizations": {
      "default": [],
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "input": {
            "type": [
              "number",
              "string"
            ]
          },
          "ratio": {
            "type": "string"
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "field",
          "note"
        ],
        "additionalProperties": false
      }
    },
    "standards": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "house": {
            "type": "string",
            "enum": [
              "PSA",
              "BGS",
              "CGC",
              "SGC"
            ],
            "description": "Grading house: PSA, BGS, CGC or SGC; TAG is excluded. Case/outer whitespace accepted by the service. Example: PSA (psa also accepted).",
            "examples": [
              "PSA",
              "BGS"
            ]
          },
          "face": {
            "type": "string",
            "enum": [
              "front",
              "back"
            ],
            "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
            "examples": [
              "front",
              "back"
            ]
          },
          "bands": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "value": {
                  "type": "number"
                },
                "label": {
                  "type": "string"
                },
                "rank": {
                  "type": "number"
                },
                "loose": {
                  "type": "number"
                },
                "tight": {
                  "type": "number"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "official",
                    "interpreted",
                    "approximate"
                  ]
                }
              },
              "required": [
                "value",
                "label",
                "rank",
                "loose",
                "status"
              ],
              "additionalProperties": false
            }
          },
          "source": {
            "type": "string"
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "official",
              "interpreted",
              "approximate"
            ]
          },
          "verified": {
            "type": "string"
          },
          "verification": {
            "type": "string"
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "house",
          "face",
          "bands",
          "source",
          "sources",
          "status",
          "verified",
          "verification",
          "note"
        ],
        "additionalProperties": false
      }
    },
    "rounding_rule": {
      "type": "string"
    },
    "tag_note": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "disclaimer": {
      "type": "string"
    }
  },
  "required": [
    "normalizations",
    "standards",
    "rounding_rule",
    "tag_note",
    "summary",
    "disclaimer"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟒measure_card_centering(face, card_size, image_url, image_base64)

Measure one ACTUAL photograph. Example shape: {"face":"front","image_base64":"<complete actual image bytes>"}. Ask front/back BEFORE calling if unknown. Exactly one user-provided public HTTPS image URL (port 443) or complete base64 source, never both. Never decode, repair or re-encode bytes yourself; never invent, shorten or rewrite base64; pass it verbatim, including an image data-URL prefix or whitespace (service normalizes). If chat attachment cannot be forwarded, send user to https://centeringlab.com/. card_size standard=63Γ—88 mm including Japanese PokΓ©mon; small=59Γ—86 mm including Yu-Gi-Oh!, not inferred from language. Request a whole card flat from above on dark surface; if sleeved/toploader or tilted, recommend a retake first. Borderless: suggest back/manual site. API photos reach server memory; site stays local. needs-review/failed gives ceilings=null: retake or adjust manually, no grade prediction. Inspect status/code even on HTTP 200; respect Retry-After.

Input Schema

{
  "type": "object",
  "properties": {
    "face": {
      "type": "string",
      "enum": [
        "front",
        "back"
      ],
      "description": "Required: front or back (English). Ask the user before calling if unclear. Case/outer whitespace accepted, e.g. Front; reverse/obverse are rejected.",
      "examples": [
        "front",
        "back"
      ]
    },
    "card_size": {
      "default": "standard",
      "description": "standard = 63Γ—88 mm; small = 59Γ—86 mm. Japanese PokΓ©mon uses standard; Yu-Gi-Oh! uses small. Case/outer whitespace accepted. Example: standard.",
      "examples": [
        "standard",
        "small"
      ],
      "type": "string",
      "enum": [
        "standard",
        "small"
      ]
    },
    "image_url": {
      "description": "Public HTTPS image URL, port 443. Private network addresses and non-image responses are rejected. Use only a URL supplied by the user: never invent one. Example syntax: https://images.example.org/card.jpg (placeholder, never fetch it).",
      "examples": [
        "https://images.example.org/card.jpg"
      ],
      "type": "string",
      "maxLength": 8192,
      "format": "uri"
    },
    "image_base64": {
      "description": "Actual base64 raster image bytes supplied by the client. Image data-URL prefix and whitespace/newlines are accepted and normalization is disclosed. Never invent bytes or substitute an attachment filename. Example syntax: data:image/png;base64,... (ellipsis is not valid bytes).",
      "examples": [
        "data:image/png;base64,iVBORw0KGgo="
      ],
      "type": "string",
      "minLength": 4,
      "maxLength": 12582912
    }
  },
  "required": [
    "face"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "normalizations": {
      "default": [],
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "input": {
            "type": [
              "number",
              "string"
            ]
          },
          "ratio": {
            "type": "string"
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "field",
          "note"
        ],
        "additionalProperties": false
      }
    },
    "status": {
      "type": "string",
      "enum": [
        "ok",
        "needs-review",
        "failed"
      ]
    },
    "code": {
      "type": "string"
    },
    "face": {
      "type": "string",
      "enum": [
        "front",
        "back"
      ],
      "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
      "examples": [
        "front",
        "back"
      ]
    },
    "card_size": {
      "type": "string",
      "enum": [
        "standard",
        "small"
      ]
    },
    "lr": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "ratio": {
              "type": "string"
            },
            "major_percent": {
              "type": "number"
            },
            "minor_percent": {
              "type": "number"
            },
            "uncertainty_pp": {
              "type": "number"
            },
            "sigma_pp": {
              "type": "number"
            },
            "worst_station_px": {
              "type": "number"
            },
            "stations_major_percent": {
              "type": "array",
              "items": {
                "type": "number"
              }
            }
          },
          "required": [
            "ratio",
            "major_percent",
            "minor_percent",
            "uncertainty_pp",
            "sigma_pp",
            "worst_station_px",
            "stations_major_percent"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "tb": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "ratio": {
              "type": "string"
            },
            "major_percent": {
              "type": "number"
            },
            "minor_percent": {
              "type": "number"
            },
            "uncertainty_pp": {
              "type": "number"
            },
            "sigma_pp": {
              "type": "number"
            },
            "worst_station_px": {
              "type": "number"
            },
            "stations_major_percent": {
              "type": "array",
              "items": {
                "type": "number"
              }
            }
          },
          "required": [
            "ratio",
            "major_percent",
            "minor_percent",
            "uncertainty_pp",
            "sigma_pp",
            "worst_station_px",
            "stations_major_percent"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "confidence": {
      "anyOf": [
        {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        {
          "type": "null"
        }
      ]
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "ceilings": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "PSA": {
              "type": "object",
              "properties": {
                "maximum_grade": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "label": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "rank": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "limiting_face": {
                  "type": "string",
                  "enum": [
                    "front",
                    "back"
                  ],
                  "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
                  "examples": [
                    "front",
                    "back"
                  ]
                },
                "limiting_axis": {
                  "type": "string",
                  "enum": [
                    "lr",
                    "tb"
                  ]
                },
                "distance_to_next": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "next_grade": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "next_label": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "borderline": {
                  "type": "boolean"
                },
                "unconstrained": {
                  "type": "boolean"
                },
                "source_status": {
                  "type": "string",
                  "enum": [
                    "official",
                    "interpreted",
                    "approximate"
                  ]
                },
                "standard_status": {
                  "type": "string",
                  "enum": [
                    "official",
                    "interpreted",
                    "approximate"
                  ]
                },
                "source": {
                  "type": "string"
                },
                "sources": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "verified": {
                  "type": "string"
                },
                "verification": {
                  "type": "string"
                }
              },
              "required": [
                "maximum_grade",
                "label",
                "rank",
                "limiting_face",
                "limiting_axis",
                "distance_to_next",
                "next_grade",
                "next_label",
                "borderline",
                "unconstrained",
                "source_status",
                "standard_status",
                "source",
                "sources",
                "verified",
                "verification"
              ],
              "additionalProperties": false
            },
            "BGS": {
              "type": "object",
              "properties": {
                "maximum_grade": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "label": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "rank": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "limiting_face": {
                  "type": "string",
                  "enum": [
                    "front",
                    "back"
                  ],
                  "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
                  "examples": [
                    "front",
                    "back"
                  ]
                },
                "limiting_axis": {
                  "type": "string",
                  "enum": [
                    "lr",
                    "tb"
                  ]
                },
                "distance_to_next": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "next_grade": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "next_label": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "borderline": {
                  "type": "boolean"
                },
                "unconstrained": {
                  "type": "boolean"
                },
                "source_status": {
                  "type": "string",
                  "enum": [
                    "official",
                    "interpreted",
                    "approximate"
                  ]
                },
                "standard_status": {
                  "type": "string",
                  "enum": [
                    "official",
                    "interpreted",
                    "approximate"
                  ]
                },
                "source": {
                  "type": "string"
                },
                "sources": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "verified": {
                  "type": "string"
                },
                "verification": {
                  "type": "string"
                }
              },
              "required": [
                "maximum_grade",
                "label",
                "rank",
                "limiting_face",
                "limiting_axis",
                "distance_to_next",
                "next_grade",
                "next_label",
                "borderline",
                "unconstrained",
                "source_status",
                "standard_status",
                "source",
                "sources",
                "verified",
                "verification"
              ],
              "additionalProperties": false
            },
            "CGC": {
              "type": "object",
              "properties": {
                "maximum_grade": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "label": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "rank": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "limiting_face": {
                  "type": "string",
                  "enum": [
                    "front",
                    "back"
                  ],
                  "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
                  "examples": [
                    "front",
                    "back"
                  ]
                },
                "limiting_axis": {
                  "type": "string",
                  "enum": [
                    "lr",
                    "tb"
                  ]
                },
                "distance_to_next": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "next_grade": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "next_label": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "borderline": {
                  "type": "boolean"
                },
                "unconstrained": {
                  "type": "boolean"
                },
                "source_status": {
                  "type": "string",
                  "enum": [
                    "official",
                    "interpreted",
                    "approximate"
                  ]
                },
                "standard_status": {
                  "type": "string",
                  "enum": [
                    "official",
                    "interpreted",
                    "approximate"
                  ]
                },
                "source": {
                  "type": "string"
                },
                "sources": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "verified": {
                  "type": "string"
                },
                "verification": {
                  "type": "string"
                }
              },
              "required": [
                "maximum_grade",
                "label",
                "rank",
                "limiting_face",
                "limiting_axis",
                "distance_to_next",
                "next_grade",
                "next_label",
                "borderline",
                "unconstrained",
                "source_status",
                "standard_status",
                "source",
                "sources",
                "verified",
                "verification"
              ],
              "additionalProperties": false
            },
            "SGC": {
              "type": "object",
              "properties": {
                "maximum_grade": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "label": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "rank": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "limiting_face": {
                  "type": "string",
                  "enum": [
                    "front",
                    "back"
                  ],
                  "description": "Face: front or back, in English. Ask the user if unknown. Case and outer whitespace accepted; never use reverse/obverse or translated names. Example: front.",
                  "examples": [
                    "front",
                    "back"
                  ]
                },
                "limiting_axis": {
                  "type": "string",
                  "enum": [
                    "lr",
                    "tb"
                  ]
                },
                "distance_to_next": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "next_grade": {
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "next_label": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "borderline": {
                  "type": "boolean"
                },
                "unconstrained": {
                  "type": "boolean"
                },
                "source_status": {
                  "type": "string",
                  "enum": [
                    "official",
                    "interpreted",
                    "approximate"
                  ]
                },
                "standard_status": {
                  "type": "string",
                  "enum": [
                    "official",
                    "interpreted",
                    "approximate"
                  ]
                },
                "source": {
                  "type": "string"
                },
                "sources": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "verified": {
                  "type": "string"
                },
                "verification": {
                  "type": "string"
                }
              },
              "required": [
                "maximum_grade",
                "label",
                "rank",
                "limiting_face",
                "limiting_axis",
                "distance_to_next",
                "next_grade",
                "next_label",
                "borderline",
                "unconstrained",
                "source_status",
                "standard_status",
                "source",
                "sources",
                "verified",
                "verification"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "PSA",
            "BGS",
            "CGC",
            "SGC"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "adjust_url": {
      "type": "string"
    },
    "advice": {
      "type": "string"
    },
    "elapsed_ms": {
      "type": "number"
    },
    "image_bytes": {
      "type": "number"
    },
    "summary": {
      "type": "string"
    },
    "disclaimer": {
      "type": "string"
    }
  },
  "required": [
    "normalizations",
    "status",
    "code",
    "face",
    "card_size",
    "lr",
    "tb",
    "confidence",
    "warnings",
    "ceilings",
    "adjust_url",
    "advice",
    "elapsed_ms",
    "image_bytes",
    "summary",
    "disclaimer"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools
verifiedversion not recorded3 tools
verifiedversion not recorded3 tools