Skip to main content
Glama

Server Details

AI agents discover and order Brand Design services, including the 101Ts3t real-payment test.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 25 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.3/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct action or resource: registration, catalogue/manifest reads, order creation/status, offer acceptance, payment start, and three separate KYA operations. The KYA challenge/verify/status tools are clearly differentiated by mutate/read semantics, and catalog vs manifest serve different discovery purposes.

Naming Consistency4/5

The set is consistently snake_case and mostly follows a verb_noun pattern (accept_offer, create_order, start_payment, register_agent). Minor deviations exist for read-only tools like catalog, manifest, and order_status, which use bare nouns or noun phrases rather than a verb.

Tool Count5/5

Ten tools is well-scoped for an agent commerce protocol covering registration, discovery, ordering, offer acceptance, payment, and KYA. No tool appears redundant or trivial, and the set is neither too thin nor bloated.

Completeness4/5

The surface covers the core lifecycle: register agent, read catalogue/manifest, create order, accept offer, start payment, and check status, plus full KYA challenge/verify/status. Minor gaps include no explicit cancel/refund or order-history/list operations, but primary agent workflows are supported.

Available Tools

10 tools
accept_offer
Idempotent
Inspect

Accept the offer on behalf of the buyer. Needs credentials. This locks the billing identity, the offer version and the hash of the terms as they stand at this moment. A later change to the website cannot pass for what was agreed. Errors: OFFER_CHANGED (409) if the offer or the terms changed since you read them; read order_status and use the new values. OFFER_EXPIRED (409) 30 days after the order. MANUAL_OFFER_REQUIRED (409) while a person has not priced the service yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
orderYesThe order id returned by create_order.
secretNoRequired unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The secret returned by register_agent.
billingYesThe buyer as it will appear on the invoice and the contract. For type company, company, registration and representative are also required. For type person, leave out company, registration, vat and representative. No other keys are accepted.
clientIdNoRequired unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The clientId returned by register_agent.
termsHashYesSHA-256 of the terms page in the language of the order: offer.terms.<language>.hash from the order, copied exactly. Sending it confirms that the buyer accepts those terms.
accessTokenYesThe accessToken returned by create_order.
offerVersionYesoffer.version from the order, copied exactly.
immediateStartNoNatural persons only: true when the buyer expressly asks the work to start within the 14-day withdrawal period and acknowledges losing the right of withdrawal once the service is fully performed.
catalogA
Read-only
Inspect

Read the service catalogue: names, prices, currency and terms. No credentials needed. All amounts are integers in the minor unit; 100000 means 1000.00 EUR.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description reinforces this with 'No credentials needed.' It adds valuable behavioral context beyond the annotation: the integer minor-unit convention (100000 means 1000.00 EUR) and the explicit statement that no authentication is required. This is useful for an agent deciding whether to call this tool without setup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each carrying distinct information: what the catalogue contains, that no credentials are needed, and the integer minor-unit convention. No filler, no repetition of the schema, and the most important scoping information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool, the description is nearly complete. It covers the resource, the data fields, the currency format, and the authentication requirement. The only minor gap is that it doesn't describe the exact response structure (e.g., whether it's a list or object), but with no output schema and a simple catalogue read, this is a small omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema is trivially complete. The description adds meaning by explaining the return semantics (integer minor units, currency), which is the only parameter-like ambiguity an agent might face. With 0 params, the baseline is 4, and the description earns it by clarifying the data format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Read') and resource ('service catalogue'), and enumerates exactly what the catalogue contains: names, prices, currency, and terms. This clearly distinguishes it from the sibling tools, which are all action-oriented (accept_offer, create_order, start_payment) or status-related (order_status, manifest).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly signals when to use this tool: when an agent needs catalogue data (names, prices, currency, terms) before making decisions like creating an order or starting a payment. It doesn't explicitly name alternatives or exclusions, but the read-only nature and the sibling set make the usage context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_orderAInspect

Place an order for a service. Needs credentials. Returns the order id, the offer and an accessToken you must keep for the following calls. The offer is pinned to the hash of the service page; accept_offer needs offer.version and offer.terms..hash from it. Services without a catalogue price return an offer with no total and wait for a person to price it. Errors: MISSING_ when a required brief field is absent, UNEXPECTED_FIELD when the brief has a key the service does not declare.

ParametersJSON Schema
NameRequiredDescriptionDefault
briefYesRequired MCP argument: send an object, including {} when the selected service has no required brief fields. Direct REST may omit brief and treats that as {}; required catalog fields remain mandatory. One string per field the catalogue lists under this service in catalog.services.<service>.fields. Use each field id as the key. Fields with required: true must be present; the max value is the length limit. No other keys are accepted.
linesNoOnly for services that have catalog.services.<service>.configurator. One entry per item: item is an id from configurator.items; qty is the number of designs, or the number of pages when the item has per "page", within item.qty min and max; options maps every option id of the item to one of its value ids; note is free text, required when the item has noteRequired. The price is computed by the seller from the catalogue; never send a price. If any chosen item has price null, the order waits for a person to price it.
secretNoRequired unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The secret returned by register_agent.
serviceYesService id: one of the keys of catalog.services, as returned by the catalog tool.
clientIdNoRequired unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The clientId returned by register_agent.
languageNoLanguage of the offer, the terms and the documents. This MCP adapter defaults to en; direct REST requires payload.language explicitly.en
printQuoteNoOnly with lines: the buyer would like a print quote once the design work has started. Printing is not part of this order.
idempotencyKeyNoYour own stable key, 16-100 characters, so a repeated call does not create a second order. If omitted this MCP adapter generates a new key for each invocation; provide and reuse a key for retries. Direct REST always requires idempotencyKey.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as non-read-only, non-idempotent and non-destructive, and the description adds substantial context beyond them: the auth requirement, that the caller must retain accessToken for follow-up calls, that the offer is hash-pinned, that some orders stall awaiting human pricing, and the MISSING_<field>/UNEXPECTED_FIELD error contract. The idempotencyKey explanation is consistent with idempotentHint=false (retries need a reused key) rather than contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense and front-loaded: purpose first, then return contract, then pricing edge case, then error codes. Every sentence carries information, though the back half is run-on and could be split for scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by describing the return values (order id, offer, accessToken and its retention requirement). Combined with the error contract, idempotency guidance and human-pricing branch for an 8-parameter, nested-schema tool, it covers what an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all eight parameters are already documented in the schema; baseline is 3. The description adds only marginal param detail (brief field-absence errors, language default, offer.terms.<language>.hash linkage), so it does not clearly exceed the structured data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Place an order for a service') and immediately distinguishes it from siblings by describing the offer/accessToken handoff that feeds accept_offer. An agent can tell it apart from order_status, start_payment and accept_offer without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear sequencing context: credentials are needed (pointing to register_agent), the returned offer fields are what accept_offer consumes, and services with no catalogue price wait for a human. It does not state explicit when-not or compare against a sibling like accept_offer/order_status directly, but the workflow conditions are clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kya_challengeAInspect

Issue a fresh DNS TXT challenge for your currently authenticated agent identity. Needs commerce.order for OAuth. Supply an HTTPS contact URL on a domain you control, especially on the first OAuth connection. Omitting contact reuses the current contact. This replaces the previous challenge and clears its verification. Publish the returned txtValue at dnsName, then call kya_verify. Domain control does not establish buyer identity or grant spending authority. Do not publish secrets in DNS.

ParametersJSON Schema
NameRequiredDescriptionDefault
secretNoRequired unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The secret returned by register_agent.
contactNoHTTPS URL on your own public domain. No IP address, credentials, custom port or URL fragment.
clientIdNoRequired unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The clientId returned by register_agent.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose non-read-only, non-idempotent behavior, but the description adds crucial context: this replaces the previous challenge and clears its verification, requires domain control, and warns about not publishing secrets. These details go well beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured, front-loading the core action and sequencing. Each sentence adds distinct operational value, though slightly more compact phrasing could improve readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the full workflow: issuance prerequisites, contact URL requirements, replacement behavior, next steps (publish TXT, then kya_verify), and security constraints. With no output schema, it sufficiently explains the expected return (txtValue at dnsName). Nothing an agent needs is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already explains parameters thoroughly, but the description adds practical guidance: contact is optional and reuses existing when omitted, and it is especially recommended on first OAuth connection. It also implicitly explains that secret and clientId are authentication alternatives.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (issue a fresh DNS TXT challenge) scoped to the authenticated agent identity. The description clearly distinguishes this from siblings like kya_verify and kya_status by naming them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit prerequisites (commerce.order scope, OAuth, HTTPS contact URL on controlled domain), states the default when contact is omitted, and directly instructs to call kya_verify next. It also clearly excludes identity/spending implications, preventing misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kya_statusA
Read-only
Inspect

Read DNS domain-control verification for your currently authenticated agent. Needs commerce.read for OAuth. Returns verification status and, when present, DNS instructions and validity timestamps. This does not change the contact, challenge or verification.

ParametersJSON Schema
NameRequiredDescriptionDefault
secretNoRequired unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The secret returned by register_agent.
clientIdNoRequired unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The clientId returned by register_agent.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description is consistent with them rather than repeating them. It adds genuinely new behavioral context: the OAuth scope required and what comes back (status plus DNS instructions and validity timestamps when present). It does not cover error behavior or what an unverified state returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: purpose, auth prerequisite, return contract, and a non-mutation disclaimer. The core purpose is front-loaded in the first clause with no preamble.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with no output schema, the description supplies the missing pieces: the OAuth scope needed to call it, the shape of the returned data, and confirmation that nothing is mutated. An agent has everything required to decide and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (secret, clientId) are documented in-schema, including the Bearer header alternative. The description adds nothing about parameter form or precedence, which is acceptable given the schema does the heavy lifting, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read DNS domain-control verification') scoped to 'your currently authenticated agent', which is far more precise than a bare name restatement. It stops short of naming the sibling alternatives (kya_challenge, kya_verify) explicitly, so the contrast with them must be inferred from the resource name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear precondition ('Needs commerce.read for OAuth') and a negative boundary ('does not change the contact, challenge or verification'), which tells the agent this is not the tool for mutating verification state. It never names which sibling to use instead when the agent wants to trigger a challenge or verify, so routing is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kya_verifyAInspect

Check the DNS TXT challenge for your currently authenticated agent and record domain-control verification. Needs commerce.order for OAuth. First call kya_challenge and publish its exact DNS TXT record. The response gives verifiedAt and validUntil; verification is currently valid for 24 hours. This does not authorize a purchase or a payment.

ParametersJSON Schema
NameRequiredDescriptionDefault
secretNoRequired unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The secret returned by register_agent.
clientIdNoRequired unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The clientId returned by register_agent.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false. The description adds real behavioral context the annotations lack: the return fields verifiedAt/validUntil and the 24-hour validity window. It does not say what happens on a failed or repeated verification, so it falls short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short sentences, front-loaded with the operation, then prerequisites, then outcome and the authorization disclaimer. Every sentence carries distinct information; nothing is redundant with the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully names verifiedAt and validUntil and the validity duration, and it states the prerequisite sequence and non-authorization boundary. It omits failure modes (e.g., what a TXT mismatch returns), which is the only remaining gap for a verification tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both secret and clientId are thoroughly documented there, including the Authorization-header alternative. The description mentions authentication only obliquely ('currently authenticated agent') and adds no parameter detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Check the DNS TXT challenge ... and record domain-control verification' for the currently authenticated agent. It is clearly distinguishable from the sibling kya_challenge, which it names as the prerequisite step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit prerequisites (OAuth scope commerce.order, and 'First call kya_challenge and publish its exact DNS TXT record') and an explicit boundary ('This does not authorize a purchase or a payment'). An agent knows the ordering and the scope of the operation without inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

manifestA
Read-only
Inspect

Read the commerce manifest: protocol, endpoints, authentication scheme, payment instrument and limits. No credentials needed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description reinforces this with a read-oriented verb. It adds meaningful context beyond the annotation by stating 'No credentials needed,' clarifying authentication expectations and reducing the perceived need for setup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The core purpose and content scope are front-loaded, and the credential note is a useful standalone addition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read-only tool, the description covers purpose, scope, and authentication expectations. Since there is no output schema, the enumerated content list effectively communicates what the agent can expect to learn from the manifest.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is nothing for the description to explain. The baseline for a no-parameter tool is 4, and the description adequately conveys that no inputs are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific verb 'Read' with the resource 'commerce manifest' and enumerates the contained information: protocol, endpoints, authentication scheme, payment instrument, and limits. This clearly differentiates it from sibling action tools like create_order and start_payment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use this tool: to obtain protocol, endpoint, authentication, and payment-limit details before taking action. It adds the practical note that no credentials are needed, which helps the agent decide it can be called without auth setup, though it does not explicitly contrast with alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

order_statusA
Read-only
Inspect

Read the current state of the order, its offer and its payments, including the invoice number once one has been issued. Needs credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault
orderYesThe order id returned by create_order.
secretNoRequired unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The secret returned by register_agent.
clientIdNoRequired unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The clientId returned by register_agent.
accessTokenYesThe accessToken returned by create_order.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description reinforces this with 'Read'. It adds the credential requirement ('Needs credentials') and the conditional invoice number behavior ('once one has been issued'), which are not in the annotations. This provides useful behavioral context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler. The primary purpose is front-loaded, and the credential note is a necessary caveat. Every word earns its place; nothing extraneous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core functionality, the authentication requirement, and the conditional invoice inclusion. It does not describe the return format or error behavior, but with no output schema and a simple read operation, these are not critical. The tool is adequately described for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter (order, secret, clientId, accessToken) is already documented in the schema. The description does not add any additional meaning or clarify parameter usage beyond what the schema provides. It adheres to the baseline without adding value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Read') and resource ('the order'), and explicitly enumerates the scope: offer, payments, and invoice number. This clearly distinguishes it from sibling tools like create_order, start_payment, and accept_offer, which are all mutations. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes it obvious this tool is for reading order status, and its read-only nature contrasts with the mutation siblings. However, it does not explicitly name alternatives or state when not to use it (e.g., 'use manifest for product details'). There is no exclusion guidance, so the usage context is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_agentAInspect

Register yourself and receive a client identifier and a secret. No approval and no prior arrangement. The secret is returned once and cannot be recovered. Put them in the Authorization header as "Bearer :" for the other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesYour name, 2 to 80 characters.
contactYesA https:// or mailto: URL at which a human can reach whoever runs you.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

It discloses the critical one-time secret behavior: 'The secret is returned once and cannot be recovered.' It also explains how the returned credentials must be sent in the Authorization header, which is important context the annotations do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each carrying distinct value: the result, the lack of prerequisites, the one-time secret warning, and how to use the credentials. It is entirely front-loaded with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even without an output schema, it states the return contract — 'a client identifier and a secret' — and exactly how to consume those values in later calls. For a two-parameter registration tool, nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and both required parameters have clear descriptions in the schema. The description itself adds no parameter-level detail, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb, 'Register yourself,' and names the exact deliverable: 'a client identifier and a secret.' This clearly distinguishes it from the sibling commerce tools, establishing it as the auth-registration step rather than a domain operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It establishes when to call this tool by saying the credentials are used 'for the other tools' and that 'no approval and no prior arrangement' are needed. There is no explicit exclusion, but it clearly implies this is the first step before using any sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_paymentA
Destructive
Inspect

Start payment for a stage. Needs credentials. Without sharedPaymentToken you receive a hosted payment session, which you may complete yourself with a payment instrument issued to you, or hand to the person you act for. With a delegated shared payment token the payment settles directly. A self-registered agent must first have current DNS domain-control KYA for its HTTPS contact domain: call kya_challenge with a domain you control, publish its DNS TXT record and call kya_verify; kya_status reads the current verification. KYA does not grant buyer payment authority. On-chain payment is not accepted. Errors: OFFER_EXPIRED (409) for an advance after 30 days, FINAL_NOT_RELEASED (409) when the final payment is not open yet, PAYMENTS_DISABLED (503).

ParametersJSON Schema
NameRequiredDescriptionDefault
orderYesThe order id returned by create_order.
stageNoadvance: the first payment, open after accept_offer. It is 50% of the total, or the whole total when the service is paid at once (paymentPlan single in the catalogue). final: the remaining 50%, open only after the advance is paid and the seller has released the work for final payment. Defaults to advance.
secretNoRequired unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The secret returned by register_agent.
clientIdNoRequired unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The clientId returned by register_agent.
accessTokenYesThe accessToken returned by create_order.
sharedPaymentTokenNoOnly for delegated payment without a hosted page: a Stripe shared payment token granted to the seller profile in manifest.payment.networkBusinessProfile. Leave it out to receive a hosted payment session instead.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive/non-idempotent/openWorld, and the description goes well beyond them: credential requirement, the two settlement paths, the KYA DNS precondition sequence, the on-chain rejection, and named error codes with HTTP statuses (OFFER_EXPIRED 409, FINAL_NOT_RELEASED 409, PAYMENTS_DISABLED 503). This is unusually rich behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then conditions, then prerequisites, then errors — a sensible ordering. It is dense and slightly long, but nearly every clause carries operational meaning (auth, KYA sequencing, error codes) rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return burden: it explains what a hosted session is and that a delegated token settles directly, and enumerates failure modes. It stops short of describing the concrete response payload (session handle/URL, settlement identifiers) an agent would need to continue the flow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds semantics the schema does not: the hosted-session consequence of omitting sharedPaymentToken and the delegation model behind it. It does not add timing or formatting detail for order/accessToken, hence not a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (start payment for a stage) and immediately splits the behavior into two mutually exclusive modes: hosted session vs delegated token settlement. It also names the KYA prerequisite tools (kya_challenge, kya_verify, kya_status), so an agent can place it relative to siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when each mode applies: omitted sharedPaymentToken yields a hosted session, a delegated token settles directly. It also states the precondition chain for self-registered agents (DNS domain-control KYA before payment) and the negative constraint that KYA does not grant buyer payment authority.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedaccept_offer1 field changed
      • addedInput schema / properties / immediateStart
        Added value: +{
        +  "description": "Natural persons only: true when the buyer expressly asks the work to start within the 14-day withdrawal period and acknowledges losing the right of withdrawal once the service is fully performed.",
        +  "type": "boolean"
        +}
  2. 4 tool updates
    • Changedcreate_order4 fields changed
      • changedInput schema / properties / brief / description
        Previous value: -"One string per field the catalogue lists under this service in catalog.services.<service>.fields. Use each field id as the key. Fields with required: true must be present; the max value is the length limit. No other keys are accepted."New value: +"Required MCP argument: send an object, including {} when the selected service has no required brief fields. Direct REST may omit brief and treats that as {}; required catalog fields remain mandatory. One string per field the catalogue lists under this service in catalog.services.<service>.fields. Use each field id as the key. Fields with required: true must be present; the max value is the length limit. No other keys are accepted."
      • changedInput schema / properties / idempotencyKey / description
        Previous value: -"Your own key, so a repeated call does not create a second order."New value: +"Your own stable key, 16-100 characters, so a repeated call does not create a second order. If omitted this MCP adapter generates a new key for each invocation; provide and reuse a key for retries. Direct REST always requires idempotencyKey."
      • addedInput schema / properties / language / default
        Added value: +"en"
      • changedInput schema / properties / language / description
        Previous value: -"Language of the offer, the terms and the documents. Defaults to en."New value: +"Language of the offer, the terms and the documents. This MCP adapter defaults to en; direct REST requires payload.language explicitly."
    • Addedkya_challenge
    • Addedkya_status
    • Addedkya_verify
  3. 1 tool update
    • Changedcreate_order2 fields changed
      • addedInput schema / properties / lines
        Added value: +{
        +  "description": "Only for services that have catalog.services.<service>.configurator. One entry per item: item is an id from configurator.items; qty is the number of designs, or the number of pages when the item has per \"page\", within item.qty min and max; options maps every option id of the item to one of its value ids; note is free text, required when the item has noteRequired. The price is computed by the seller from the catalogue; never send a price. If any chosen item has price null, the order waits for a person to price it.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "item": {
        +        "type": "string"
        +      },
        +      "note": {
        +        "maxLength": 500,
        +        "type": "string"
        +      },
        +      "options": {
        +        "additionalProperties": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "qty": {
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "item"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / printQuote
        Added value: +{
        +  "description": "Only with lines: the buyer would like a print quote once the design work has started. Printing is not part of this order.",
        +  "type": "boolean"
        +}
  4. 4 tool updates
    • Changedaccept_offer12 fields changed
      • addedInput schema / properties / accessToken / description
        Added value: +"The accessToken returned by create_order."
      • addedInput schema / properties / billing / additionalProperties
        Added value: +false
      • changedInput schema / properties / billing / description
        Previous value: -"type (person or company), fullName or company with eik, email, country, city, address, phone."New value: +"The buyer as it will appear on the invoice and the contract. For type company, company, registration and representative are also required. For type person, leave out company, registration, vat and representative. No other keys are accepted."
      • addedInput schema / properties / billing / if
        Added value: +{
        +  "properties": {
        +    "type": {
        +      "const": "company"
        +    }
        +  }
        +}
      • addedInput schema / properties / billing / properties
        Added value: +{
        +  "address": {
        +    "maxLength": 250,
        +    "minLength": 3,
        +    "type": "string"
        +  },
        +  "city": {
        +    "maxLength": 100,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "company": {
        +    "description": "Company only. Registered name.",
        +    "maxLength": 200,
        +    "minLength": 2,
        +    "type": "string"
        +  },
        +  "country": {
        +    "description": "ISO 3166-1 alpha-2 code, for example BG.",
        +    "pattern": "^[A-Za-z]{2}$",
        +    "type": "string"
        +  },
        +  "email": {
        +    "maxLength": 254,
        +    "type": "string"
        +  },
        +  "fullName": {
        +    "description": "Full name of the buyer, or of the contact person for a company.",
        +    "maxLength": 150,
        +    "minLength": 3,
        +    "type": "string"
        +  },
        +  "phone": {
        +    "description": "Optional.",
        +    "maxLength": 40,
        +    "minLength": 5,
        +    "type": "string"
        +  },
        +  "registration": {
        +    "description": "Company only. Company registration number; for country BG the 9- or 13-digit EIK.",
        +    "maxLength": 40,
        +    "minLength": 4,
        +    "type": "string"
        +  },
        +  "representative": {
        +    "description": "Company only. The person who legally represents the company.",
        +    "maxLength": 150,
        +    "minLength": 3,
        +    "type": "string"
        +  },
        +  "type": {
        +    "enum": [
        +      "person",
        +      "company"
        +    ],
        +    "type": "string"
        +  },
        +  "vat": {
        +    "description": "Company only. Optional VAT number.",
        +    "maxLength": 40,
        +    "minLength": 4,
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / billing / required
        Added value: +[
        +  "type",
        +  "fullName",
        +  "email",
        +  "country",
        +  "city",
        +  "address"
        +]
      • addedInput schema / properties / billing / then
        Added value: +{
        +  "required": [
        +    "company",
        +    "registration",
        +    "representative"
        +  ]
        +}
      • changedInput schema / properties / clientId / description
        Previous value: -"Your client identifier, if not sent in the Authorization header."New value: +"Required unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The clientId returned by register_agent."
      • addedInput schema / properties / offerVersion / description
        Added value: +"offer.version from the order, copied exactly."
      • addedInput schema / properties / order / description
        Added value: +"The order id returned by create_order."
      • changedInput schema / properties / secret / description
        Previous value: -"Your secret, if not sent in the Authorization header."New value: +"Required unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The secret returned by register_agent."
      • addedInput schema / properties / termsHash / description
        Added value: +"SHA-256 of the terms page in the language of the order: offer.terms.<language>.hash from the order, copied exactly. Sending it confirms that the buyer accepts those terms."
    • Changedcreate_order6 fields changed
      • addedInput schema / properties / brief / additionalProperties
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / properties / brief / description
        Previous value: -"The fields the catalogue declares for this service."New value: +"One string per field the catalogue lists under this service in catalog.services.<service>.fields. Use each field id as the key. Fields with required: true must be present; the max value is the length limit. No other keys are accepted."
      • changedInput schema / properties / clientId / description
        Previous value: -"Your client identifier, if not sent in the Authorization header."New value: +"Required unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The clientId returned by register_agent."
      • changedInput schema / properties / language / description
        Previous value: -"Language of the offer and the documents. Defaults to en."New value: +"Language of the offer, the terms and the documents. Defaults to en."
      • changedInput schema / properties / secret / description
        Previous value: -"Your secret, if not sent in the Authorization header."New value: +"Required unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The secret returned by register_agent."
      • changedInput schema / properties / service / description
        Previous value: -"Service identifier from the catalogue."New value: +"Service id: one of the keys of catalog.services, as returned by the catalog tool."
    • Changedorder_status4 fields changed
      • addedInput schema / properties / accessToken / description
        Added value: +"The accessToken returned by create_order."
      • changedInput schema / properties / clientId / description
        Previous value: -"Your client identifier, if not sent in the Authorization header."New value: +"Required unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The clientId returned by register_agent."
      • addedInput schema / properties / order / description
        Added value: +"The order id returned by create_order."
      • changedInput schema / properties / secret / description
        Previous value: -"Your secret, if not sent in the Authorization header."New value: +"Required unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The secret returned by register_agent."
    • Changedstart_payment6 fields changed
      • addedInput schema / properties / accessToken / description
        Added value: +"The accessToken returned by create_order."
      • changedInput schema / properties / clientId / description
        Previous value: -"Your client identifier, if not sent in the Authorization header."New value: +"Required unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The clientId returned by register_agent."
      • addedInput schema / properties / order / description
        Added value: +"The order id returned by create_order."
      • changedInput schema / properties / secret / description
        Previous value: -"Your secret, if not sent in the Authorization header."New value: +"Required unless you authenticate with the Authorization header (Bearer <clientId>:<secret>, or an OAuth access token issued for this server). The secret returned by register_agent."
      • changedInput schema / properties / sharedPaymentToken / description
        Previous value: -"Optional. A Stripe shared payment token granted to the seller profile named in the manifest."New value: +"Only for delegated payment without a hosted page: a Stripe shared payment token granted to the seller profile in manifest.payment.networkBusinessProfile. Leave it out to receive a hosted payment session instead."
      • changedInput schema / properties / stage / description
        Previous value: -"Defaults to advance."New value: +"advance: the first payment, open after accept_offer. It is 50% of the total, or the whole total when the service is paid at once (paymentPlan single in the catalogue). final: the remaining 50%, open only after the advance is paid and the seller has released the work for final payment. Defaults to advance."
  5. 7 tool updates
    • First observedaccept_offer
    • First observedcatalog
    • First observedcreate_order
    • First observedmanifest
    • First observedorder_status
    • First observedregister_agent
    • First observedstart_payment

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources