_ registry / mcp streamable-http · checked 1h ago

ptpge-mcp

https://mcp.ptpge.org

Registry code: a7d6c0a8cdb28997

api record

PTPGE vocabulary server — the open specification of print (printing & graphic industry). Use ptpge_search_terms to find terms, ptpge_get_term for full context on one term, ptpge_get_version for dataset version/statistics.

endpoint
https://mcp.ptpge.org/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is ptpge-mcp live?
Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
Is ptpge-mcp free to use?
Yes — the hub reached it with no key and no payment.
What tools does ptpge-mcp have?
9 tools: ptpge_search_terms, ptpge_get_term, ptpge_get_product_envelope, ptpge_validate_config, ptpge_resolve_color_notation, ptpge_fingerprint, ptpge_expand_fingerprint, ptpge_browse, ….
Is ptpge-mcp safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
71ms

last good check

priced tools
0

of 9 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 9 tools
2 open 7 never probed 2 of 9 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • ptpge_browse open 1h ago

    Navigate the PTPGE hierarchy. Returns a node and its children (id, notation, label, level, elementType, hasChildren). Omit id_or_path to get the three top concepts (printing, ordering, variables). Use this for systematic exploration instead of guessing search keywords.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "language": {
          "type": "string",
          "default": "en"
        },
        "id_or_path": {
          "type": "string",
          "description": "Full URI or path under /v1/. Omit for the top concepts."
        }
      }
    }
    arguments 14 lines
  • ptpge_get_version open 1h ago

    Return the current PTPGE dataset version, total term count, counts per level and per group, license, scheme URL, and server version. Useful for version-pinning, health checks, and diagnostics.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {}
    }
    arguments 5 lines
  • ptpge_search_terms unknown never probed

    Free-text search over the PTPGE vocabulary and registers — the open specification of print. Returns a ranked list of matching terms with their URI, notation, preferred label, level (top-concept / group / category / sub-category / element), group, and a relevance score (0.0–1.0).

    mcp-tool

    {
      "type": "object",
      "required": [
        "query"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "default": 10,
          "maximum": 100,
          "minimum": 1,
          "description": "Maximum number of results to return."
        },
        "query": {
          "type": "string",
          "description": "Free-text query. Matched against notation, label, altLabels, and definition."
        },
        "groups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional filter by group code(s), e.g. [\"substrates\", \"configurations\"]. Omit for all groups."
        },
        "language": {
          "type": "string",
          "default": "en",
          "description": "ISO 639-1 language code for label and definition matching."
        },
        "query_language": {
          "type": "string",
          "description": "ISO 639-1 code for the language the QUERY is written in — not the language of the labels you want back (that is `language`). Optional, and it never changes the results: search always looks across every language. It is used only so that a phrase we cannot resolve is recorded against the right market, which is how missing synonyms get found and added. Send it if you know it; omit it if you do not."
        },
        "include_deprecated": {
          "type": "boolean",
          "default": false,
          "description": "Also return deprecated terms (they still resolve by URI but are no longer vocabulary). Default false: a brand name resolves to its register entry (kind=supplier) instead of the retired term."
        }
      }
    }
    arguments 40 lines
  • ptpge_get_term unknown never probed

    Fetch full context for a single PTPGE term: definition, broader/narrower relations, exactMatch / closeMatch mappings, properties, notation, level, and metadata. Accepts either a full URI (https://ptpge.org/v1/...) or a relative path under /v1/.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id_or_path"
      ],
      "properties": {
        "language": {
          "type": "string",
          "default": "en",
          "description": "ISO 639-1 language code for which label and definition variants to return flat."
        },
        "id_or_path": {
          "type": "string",
          "description": "Full URI or relative path under /v1/. E.g. 'printing/configurations/formats/a-series/a4'."
        }
      }
    }
    arguments 17 lines
  • ptpge_get_product_envelope unknown never probed

    Return the complete Configuration Envelope of a product class in one call: supportsSetupModel, every supports* and perSurfaceSupports* predicate with resolved labels, plus typical* descriptors. This is the full menu of what can be configured for the product — use it before composing a configuration, instead of many individual ptpge_get_term calls. Absent predicates mean NOT supported (closed semantics).

    mcp-tool

    {
      "type": "object",
      "required": [
        "id_or_path"
      ],
      "properties": {
        "language": {
          "type": "string",
          "default": "en"
        },
        "id_or_path": {
          "type": "string",
          "description": "Product URI or path, e.g. 'ordering/products/brochures'."
        }
      }
    }
    arguments 16 lines
  • ptpge_validate_config unknown never probed

    Layer 1 envelope validation of a product configuration: checks every binding against the product's supports* envelopes, maps numeric substrate-weight (gsm) to its weight band via the bands' minWeight/maxWeight properties, and returns data-driven advisories (e.g. creasing recommended above the scoring thresholds). NOTE: this validates the ENVELOPE only — cross-variable legality (e.g. valid panel counts per fold topology) and vendor capability matching are Layer 2 (Configurator) services; commercial values (date, price) are not configuration and belong to the transaction layer. Elicitation contract (shared by every ptpge_* tool): whenever a result carries `needs_disambiguation`, each entry has a `field`, a `question` that MUST be put to the user verbatim, and `candidates` — never infer the answer, never fingerprint until it is resolved. SD-0083: the validator also checks completeness — a missing REQUIRED axis of the product (setup/fold, format, page count, binding, colour on the first face, shape where shape is the product) returns needs_disambiguation with the envelope's candidates; a required axis with exactly one allowed value is bound for you as envelope-implied; a surface name that is not a face of the bound setup (faces: flat-sheet front/back, folded-sheet outside/inside, multi-page front-cover…back-cover) is rejected with the allowed faces. `complete: true` means an identity can be issued.

    mcp-tool

    {
      "type": "object",
      "required": [
        "product",
        "bindings"
      ],
      "properties": {
        "product": {
          "type": "string",
          "description": "Product URI or path."
        },
        "bindings": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "variable"
            ],
            "properties": {
              "value": {
                "description": "URI/path (enum) or number (numeric variables)."
              },
              "values": {
                "type": "array",
                "description": "For cardinality-multiple variables."
              },
              "surface": {
                "type": "string",
                "description": "Surface slug for surface-scoped bindings (e.g. 'outside')."
              },
              "variable": {
                "type": "string",
                "description": "Variable URI or path, e.g. 'variables/configuration/format'."
              },
              "provenance": {
                "enum": [
                  "confirmed",
                  "inferred",
                  "policy-default",
                  "envelope-implied"
                ],
                "type": "string",
                "description": "How this value came about (SD-0071): 'confirmed' — the buyer chose it; 'inferred' — you derived it without asking; 'policy-default' — a house rule supplied it. Never part of the fingerprint; identity is the product, not the conversation. Set it honestly: a vendor may refuse an order whose colour was never confirmed."
              }
            }
          },
          "description": "Variable bindings to validate."
        },
        "language": {
          "type": "string",
          "default": "en"
        }
      }
    }
    arguments 54 lines
  • ptpge_resolve_color_notation unknown never probed

    Resolve print colour pair notation (4/4, 4/1, 4+4) into per-surface colour bindings for a given product. The number is a COUNT OF SEPARATIONS, not a colour: it is resolved by searching the combinations this product's envelope actually supports whose colorChannelCount sums to that number. Returns one of three outcomes per surface — a deterministic binding, `needs_disambiguation` with the candidate combinations, or `invalid_for_template` when no combination is possible. IMPORTANT: when `needs_disambiguation` is returned you MUST put its `question` to the user and never infer the answer yourself. '1' is black on some products and a named spot colour on others; guessing gives two different products the same identity. Do not fingerprint an unresolved configuration.

    mcp-tool

    {
      "type": "object",
      "required": [
        "product",
        "notation"
      ],
      "properties": {
        "setup": {
          "type": "string",
          "description": "Optional setup-model URI/path (e.g. 'printing/configurations/setup-models/folded-sheet/tri-fold') so the surfaces match the fold. Required for products with several setups."
        },
        "product": {
          "type": "string",
          "description": "Product URI or path."
        },
        "language": {
          "type": "string",
          "default": "en"
        },
        "notation": {
          "type": "string",
          "description": "Pair notation, e.g. '4/4', '4 / 1', '4+4'."
        },
        "surfaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional surface slugs in notation order. Without them the faces come from 'setup' (or the product's only setup): flat-sheet front/back, folded-sheet outside/inside, roll face/back (SD-0083)."
        }
      }
    }
    arguments 32 lines
  • ptpge_fingerprint unknown never probed

    Compute the canonical ptpge-cfs/1 serialization and SHA-256 fingerprint of a resolved product configuration (SD-0040) — the vendor-neutral identity used as quote/order/cache key. Returns both profiles in strict containment spec ⊂ offer: 'spec' = the manufacturable artifact, commercial cluster excluded; 'offer' = spec plus the commercial cluster, which is exactly the four variables under variables/order/ — quantity, lead-time, delivery-method, incoterm (closed list, SD-0040). Transaction data (print-ready file, delivery date, price) is keyed BY the offer fingerprint and never hashed into it. SD-0083: the input is validated first and an identity is issued ONLY for a valid, complete configuration — every required axis of the product bound (or envelope-implied where the envelope offers one value; those are written into the identity) and every surface one of the bound setup's faces. Otherwise the result is error=not_fingerprintable with the validator's needs_disambiguation: put each question to the user verbatim, bind the answer, call again. Never guess a missing axis.

    mcp-tool

    {
      "type": "object",
      "required": [
        "product",
        "bindings"
      ],
      "properties": {
        "product": {
          "type": "string",
          "description": "Product URI or path."
        },
        "visuals": {
          "type": "boolean",
          "default": false,
          "description": "Also return markSvg (the ptpge-mark/1 recognition mark) and qrSvg (QR encoding the resolver permalink) per profile. Off by default to keep payloads small."
        },
        "bindings": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "variable"
            ],
            "properties": {
              "value": {
                "description": "URI/path or number."
              },
              "values": {
                "type": "array"
              },
              "ordered": {
                "type": "boolean"
              },
              "surface": {
                "type": "string"
              },
              "variable": {
                "type": "string"
              }
            }
          }
        }
      }
    }
    arguments 44 lines
  • ptpge_expand_fingerprint unknown 1h ago

    Expand a spec or offer fingerprint (ptpge-cfs/1, full 64-hex or 16-hex short form) back into its structured configuration — the read-back path for MIS/ERP: matched profile, product, every binding with resolved labels, the canonical string, and the dataset version. This is a LOOKUP in the public resolver (ptpge.org/f/), not an inversion of the hash: it resolves when the fingerprint has been registered (every fingerprint computed by ptpge_fingerprint is self-registered within seconds). An unregistered fingerprint is still a valid identity — it simply has no stored expansion yet; returns status 'unknown' then.

    mcp-tool

    {
      "type": "object",
      "required": [
        "fingerprint"
      ],
      "properties": {
        "language": {
          "type": "string",
          "default": "en"
        },
        "fingerprint": {
          "type": "string",
          "description": "SHA-256 hex (64) or the 16-hex short form, with or without the resolver URL prefix."
        }
      }
    }
    arguments 16 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id a7d6c0a8cdb28997.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/a7d6c0a8cdb28997/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/a7d6c0a8cdb28997/badge.svg)](https://brick.blue/agent/a7d6c0a8cdb28997?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.