Skip to main content
Glama

SendaMeal Storefront

get_product_details

Get the details of one or more products. The details are the variants, the options, and the images.

Arguments

productIds - The list of product IDs. Get these IDs from the 'search_products' tool. Request only the products that the user needs. The server has a maximum count of IDs. The default maximum is 20. If you send too many IDs, the server returns an error. Then send fewer IDs. option_values - The option IDs and the value IDs of one variant. Use this argument with one product ID only. This argument applies to the B2C catalog. For a B2B buyer, the tool returns all the variants. Then select one variant. channelId - Optional. This argument selects the B2B catalog. The default is the channel of the request. variantCursor - Optional. This argument gets the next page of variants. Use this argument with one product ID only. Take the value from 'nextVariantCursor' in the previous result. If 'nextVariantCursor' is absent, or is null, or is the text "null", do not send this argument.

Results

The tool returns a list of products in 'products'. The output schema gives all the fields. A product has 'modifierOptions' only if the product has modifier options. A variant has a price, an inventory level, a purchase flag, and bulk prices only for a B2B buyer. If the tool does not find a product, the list does not include that product.

Modifier options

A modifier option is a product choice that is not a variant. Examples are an engraving message and a gift note. A variant option is never a modifier option.

If a product has no 'modifierOptions', add the product to the cart without 'selectedOptions'.

An option is required if 'isRequired' is 'true'. Send each required option to the 'add_item_to_cart' tool. If you do not send a required option, the server does not add the item. A variant selection does not replace a required option.

Each option has 'optionEntityId', 'displayName', and 'selectedOptionsKey'. 'selectedOptionsKey' is the name of the field to send the option in. A choice option has 'values'. Each value has 'valueEntityId' and 'label'. A free-entry option has 'constraints' in place of 'values'.

If 'unsupported' is 'true', you cannot send the option. A file upload is one example. If such an option is also required, tell the user to buy the product on the website.

Variant pages

The list of variants can be one page of a longer list. The server sets the page size.

If 'hasMoreVariants' is 'true', more variants exist than the tool returned. Then do not tell the user that a variant does not exist. You did not receive all the variants.

To get the next page, call this tool again. Send the same product ID, and only that product ID. Send 'variantCursor' with the value of 'nextVariantCursor'.

A filter is better than a page walk. If the user named the variant, send 'option_values' instead. One filtered call is cheaper than many pages.

Do not change 'option_values' between pages. The cursor is a position in the list of the previous call. A different filter gives the wrong variants.

Stock

Each product has 'inStock'. It tells you if the store has units in stock. It does not tell you if the user can buy the product.

If 'inStock' is 'false', do not refuse the request. Many stores accept orders for products that are not in stock. Tell the user that the product is not in stock, and that delivery can take more time. Then add the product if the user agrees. If the store blocks the purchase, the 'add_item_to_cart' tool fails and gives a reason. Give that reason to the user.

If 'inStock' is 'true', the store reports no out-of-stock condition. A store that does not count stock reports 'true' for all products. Therefore do not tell the user a quantity.

'inventoryLevel' is present only if the store publishes stock counts. If 'inventoryLevel' is absent, the count is unknown. The count is not zero.

Each variant has its own 'inStock'. Use the value of the variant if you add one variant.

Steps

  1. Call the 'search_products' tool to get the product IDs.

  2. Call this tool with the product IDs.

  3. Call the 'add_item_to_cart' tool with the results of step 1 and step 2.

If a product has variants, you must tell the 'add_item_to_cart' tool which variant to add. If a product has required modifier options, you must send those options.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
channelIdNo
productIdsYes
option_valuesNo
variantCursorNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
messageNo
successYes
productsYes
totalCountYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / variantCursor
      Added value: +{
      +  "type": [
      +    "null",
      +    "string"
      +  ]
      +}
    • addedOutput schema / properties / products / items / properties / hasMoreVariants
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / products / items / properties / nextVariantCursor
      Added value: +{
      +  "type": "string"
      +}
  2. Changed3 schema fields changed
    • removedInput schema / properties / variantCursor
      Removed value: -{
      -  "type": [
      -    "null",
      -    "string"
      -  ]
      -}
    • removedOutput schema / properties / products / items / properties / hasMoreVariants
      Removed value: -{
      -  "type": "boolean"
      -}
    • removedOutput schema / properties / products / items / properties / nextVariantCursor
      Removed value: -{
      -  "type": "string"
      -}
  3. Changed3 schema fields changed
    • addedInput schema / properties / variantCursor
      Added value: +{
      +  "type": [
      +    "null",
      +    "string"
      +  ]
      +}
    • addedOutput schema / properties / products / items / properties / hasMoreVariants
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / products / items / properties / nextVariantCursor
      Added value: +{
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • addedOutput schema / properties / products / items / properties / modifierOptions
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "constraints": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "earliest": {
      +            "type": "string"
      +          },
      +          "highest": {
      +            "type": [
      +              "null",
      +              "number"
      +            ]
      +          },
      +          "isIntegerOnly": {
      +            "type": "boolean"
      +          },
      +          "latest": {
      +            "type": "string"
      +          },
      +          "lowest": {
      +            "type": [
      +              "null",
      +              "number"
      +            ]
      +          },
      +          "maxLength": {
      +            "type": [
      +              "null",
      +              "integer"
      +            ]
      +          },
      +          "maxLines": {
      +            "type": [
      +              "null",
      +              "integer"
      +            ]
      +          },
      +          "minLength": {
      +            "type": [
      +              "null",
      +              "integer"
      +            ]
      +          }
      +        },
      +        "type": [
      +          "null",
      +          "object"
      +        ]
      +      },
      +      "displayName": {
      +        "type": "string"
      +      },
      +      "isRequired": {
      +        "type": "boolean"
      +      },
      +      "optionEntityId": {
      +        "type": "integer"
      +      },
      +      "selectedOptionsKey": {
      +        "type": "string"
      +      },
      +      "unsupported": {
      +        "type": "boolean"
      +      },
      +      "values": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "isDefault": {
      +              "type": "boolean"
      +            },
      +            "label": {
      +              "type": "string"
      +            },
      +            "valueEntityId": {
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "valueEntityId",
      +            "label"
      +          ],
      +          "type": "object"
      +        },
      +        "type": [
      +          "null",
      +          "array"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "optionEntityId",
      +      "displayName",
      +      "isRequired"
      +    ],
      +    "type": "object"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
  5. Changed2 schema fields changed
    • addedOutput schema / properties / products / items / properties / inStock
      Added value: +{
      +  "type": [
      +    "null",
      +    "boolean"
      +  ]
      +}
    • addedOutput schema / properties / products / items / properties / variants / items / properties / inStock
      Added value: +{
      +  "type": [
      +    "null",
      +    "boolean"
      +  ]
      +}
  6. Changed8 schema fields changed
    • addedInput schema / properties / channelId
      Added value: +{
      +  "type": [
      +    "null",
      +    "integer"
      +  ]
      +}
    • removedInput schema / properties / id
      Removed value: -{
      -  "type": "integer"
      -}
    • addedInput schema / properties / productIds
      Added value: +{
      +  "items": {
      +    "type": "integer"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • changedInput schema / required
      Previous value: -[
      -  "id",
      -  "option_values"
      -]New value: +[
      +  "productIds"
      +]
    • removedOutput schema / properties / product
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "images": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": [
      -        "null",
      -        "array"
      -      ]
      -    },
      -    "variants": {
      -      "items": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "SKU": {
      -            "type": "string"
      -          },
      -          "entityId": {
      -            "type": "integer"
      -          },
      -          "options": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": [
      -              "null",
      -              "array"
      -            ]
      -          }
      -        },
      -        "required": [
      -          "entityId",
      -          "SKU"
      -        ],
      -        "type": "object"
      -      },
      -      "type": [
      -        "null",
      -        "array"
      -      ]
      -    }
      -  },
      -  "type": "object"
      -}
    • addedOutput schema / properties / products
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "availability": {
      +        "type": "string"
      +      },
      +      "currencyCode": {
      +        "type": "string"
      +      },
      +      "id": {
      +        "type": "integer"
      +      },
      +      "images": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": [
      +          "null",
      +          "array"
      +        ]
      +      },
      +      "inventoryTracking": {
      +        "type": "string"
      +      },
      +      "isPriceHidden": {
      +        "type": "boolean"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "orderQuantityMaximum": {
      +        "type": "integer"
      +      },
      +      "orderQuantityMinimum": {
      +        "type": "integer"
      +      },
      +      "productUrl": {
      +        "type": "string"
      +      },
      +      "sku": {
      +        "type": "string"
      +      },
      +      "variants": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "SKU": {
      +              "type": "string"
      +            },
      +            "bulkPricing": {
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "maxQty": {
      +                    "type": [
      +                      "null",
      +                      "integer"
      +                    ]
      +                  },
      +                  "minQty": {
      +                    "type": "integer"
      +                  },
      +                  "price": {
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "minQty",
      +                  "price"
      +                ],
      +                "type": "object"
      +              },
      +              "type": [
      +                "null",
      +                "array"
      +              ]
      +            },
      +            "entityId": {
      +              "type": "integer"
      +            },
      +            "inventoryLevel": {
      +              "type": [
      +                "null",
      +                "integer"
      +              ]
      +            },
      +            "options": {
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "optionId": {
      +                    "type": "integer"
      +                  },
      +                  "optionLabel": {
      +                    "type": "string"
      +                  },
      +                  "valueId": {
      +                    "type": "integer"
      +                  },
      +                  "valueLabel": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "optionId",
      +                  "optionLabel",
      +                  "valueId",
      +                  "valueLabel"
      +                ],
      +                "type": "object"
      +              },
      +              "type": [
      +                "null",
      +                "array"
      +              ]
      +            },
      +            "price": {
      +              "type": [
      +                "null",
      +                "number"
      +              ]
      +            },
      +            "purchaseable": {
      +              "type": [
      +                "null",
      +                "boolean"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "entityId",
      +            "SKU"
      +          ],
      +          "type": "object"
      +        },
      +        "type": [
      +          "null",
      +          "array"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • addedOutput schema / properties / totalCount
      Added value: +{
      +  "type": "integer"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "success",
      -  "product"
      -]New value: +[
      +  "success",
      +  "products",
      +  "totalCount"
      +]
  7. Changed8 schema fields changed
    • removedInput schema / properties / channelId
      Removed value: -{
      -  "type": [
      -    "null",
      -    "integer"
      -  ]
      -}
    • addedInput schema / properties / id
      Added value: +{
      +  "type": "integer"
      +}
    • removedInput schema / properties / productIds
      Removed value: -{
      -  "items": {
      -    "type": "integer"
      -  },
      -  "type": [
      -    "null",
      -    "array"
      -  ]
      -}
    • changedInput schema / required
      Previous value: -[
      -  "productIds"
      -]New value: +[
      +  "id",
      +  "option_values"
      +]
    • addedOutput schema / properties / product
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "images": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "variants": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "SKU": {
      +            "type": "string"
      +          },
      +          "entityId": {
      +            "type": "integer"
      +          },
      +          "options": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": [
      +              "null",
      +              "array"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "entityId",
      +          "SKU"
      +        ],
      +        "type": "object"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
    • removedOutput schema / properties / products
      Removed value: -{
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "availability": {
      -        "type": "string"
      -      },
      -      "currencyCode": {
      -        "type": "string"
      -      },
      -      "id": {
      -        "type": "integer"
      -      },
      -      "images": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "inventoryTracking": {
      -        "type": "string"
      -      },
      -      "isPriceHidden": {
      -        "type": "boolean"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "orderQuantityMaximum": {
      -        "type": "integer"
      -      },
      -      "orderQuantityMinimum": {
      -        "type": "integer"
      -      },
      -      "productUrl": {
      -        "type": "string"
      -      },
      -      "sku": {
      -        "type": "string"
      -      },
      -      "variants": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "SKU": {
      -              "type": "string"
      -            },
      -            "bulkPricing": {
      -              "items": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "maxQty": {
      -                    "type": [
      -                      "null",
      -                      "integer"
      -                    ]
      -                  },
      -                  "minQty": {
      -                    "type": "integer"
      -                  },
      -                  "price": {
      -                    "type": "number"
      -                  }
      -                },
      -                "required": [
      -                  "minQty",
      -                  "price"
      -                ],
      -                "type": "object"
      -              },
      -              "type": [
      -                "null",
      -                "array"
      -              ]
      -            },
      -            "entityId": {
      -              "type": "integer"
      -            },
      -            "inventoryLevel": {
      -              "type": [
      -                "null",
      -                "integer"
      -              ]
      -            },
      -            "options": {
      -              "items": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "optionId": {
      -                    "type": "integer"
      -                  },
      -                  "optionLabel": {
      -                    "type": "string"
      -                  },
      -                  "valueId": {
      -                    "type": "integer"
      -                  },
      -                  "valueLabel": {
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "optionId",
      -                  "optionLabel",
      -                  "valueId",
      -                  "valueLabel"
      -                ],
      -                "type": "object"
      -              },
      -              "type": [
      -                "null",
      -                "array"
      -              ]
      -            },
      -            "price": {
      -              "type": [
      -                "null",
      -                "number"
      -              ]
      -            },
      -            "purchaseable": {
      -              "type": [
      -                "null",
      -                "boolean"
      -              ]
      -            }
      -          },
      -          "required": [
      -            "entityId",
      -            "SKU"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  "type": [
      -    "null",
      -    "array"
      -  ]
      -}
    • removedOutput schema / properties / totalCount
      Removed value: -{
      -  "type": "integer"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "success",
      -  "products",
      -  "totalCount"
      -]New value: +[
      +  "success",
      +  "product"
      +]
  8. Changed8 schema fields changed
    • addedInput schema / properties / channelId
      Added value: +{
      +  "type": [
      +    "null",
      +    "integer"
      +  ]
      +}
    • removedInput schema / properties / id
      Removed value: -{
      -  "type": "integer"
      -}
    • addedInput schema / properties / productIds
      Added value: +{
      +  "items": {
      +    "type": "integer"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • changedInput schema / required
      Previous value: -[
      -  "id",
      -  "option_values"
      -]New value: +[
      +  "productIds"
      +]
    • removedOutput schema / properties / product
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "images": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": [
      -        "null",
      -        "array"
      -      ]
      -    },
      -    "variants": {
      -      "items": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "SKU": {
      -            "type": "string"
      -          },
      -          "entityId": {
      -            "type": "integer"
      -          },
      -          "options": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": [
      -              "null",
      -              "array"
      -            ]
      -          }
      -        },
      -        "required": [
      -          "entityId",
      -          "SKU"
      -        ],
      -        "type": "object"
      -      },
      -      "type": [
      -        "null",
      -        "array"
      -      ]
      -    }
      -  },
      -  "type": "object"
      -}
    • addedOutput schema / properties / products
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "availability": {
      +        "type": "string"
      +      },
      +      "currencyCode": {
      +        "type": "string"
      +      },
      +      "id": {
      +        "type": "integer"
      +      },
      +      "images": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": [
      +          "null",
      +          "array"
      +        ]
      +      },
      +      "inventoryTracking": {
      +        "type": "string"
      +      },
      +      "isPriceHidden": {
      +        "type": "boolean"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "orderQuantityMaximum": {
      +        "type": "integer"
      +      },
      +      "orderQuantityMinimum": {
      +        "type": "integer"
      +      },
      +      "productUrl": {
      +        "type": "string"
      +      },
      +      "sku": {
      +        "type": "string"
      +      },
      +      "variants": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "SKU": {
      +              "type": "string"
      +            },
      +            "bulkPricing": {
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "maxQty": {
      +                    "type": [
      +                      "null",
      +                      "integer"
      +                    ]
      +                  },
      +                  "minQty": {
      +                    "type": "integer"
      +                  },
      +                  "price": {
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "minQty",
      +                  "price"
      +                ],
      +                "type": "object"
      +              },
      +              "type": [
      +                "null",
      +                "array"
      +              ]
      +            },
      +            "entityId": {
      +              "type": "integer"
      +            },
      +            "inventoryLevel": {
      +              "type": [
      +                "null",
      +                "integer"
      +              ]
      +            },
      +            "options": {
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "optionId": {
      +                    "type": "integer"
      +                  },
      +                  "optionLabel": {
      +                    "type": "string"
      +                  },
      +                  "valueId": {
      +                    "type": "integer"
      +                  },
      +                  "valueLabel": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "optionId",
      +                  "optionLabel",
      +                  "valueId",
      +                  "valueLabel"
      +                ],
      +                "type": "object"
      +              },
      +              "type": [
      +                "null",
      +                "array"
      +              ]
      +            },
      +            "price": {
      +              "type": [
      +                "null",
      +                "number"
      +              ]
      +            },
      +            "purchaseable": {
      +              "type": [
      +                "null",
      +                "boolean"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "entityId",
      +            "SKU"
      +          ],
      +          "type": "object"
      +        },
      +        "type": [
      +          "null",
      +          "array"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • addedOutput schema / properties / totalCount
      Added value: +{
      +  "type": "integer"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "success",
      -  "product"
      -]New value: +[
      +  "success",
      +  "products",
      +  "totalCount"
      +]
  9. First observed

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description fully carries the behavioral disclosure burden and does so thoroughly: maximum ID count and errors, omitted missing products, optional modifierOptions, unsupported options, pagination semantics, inStock meaning and its limitations, inventoryLevel absence, and variant-level stock. There is no contradiction with the schema or annotations.

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?

Although long, the description is well structured with clear sections: Arguments, Results, Modifier options, Variant pages, Stock, and Steps. Every added block serves a real calling decision, and the opening sentence immediately states the core purpose. The length is proportionate to the tool's complexity.

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?

The description covers argument semantics, return behavior, edge cases, pagination, stock caveats, required modifiers, and a full step-by-step workflow. With an output schema present, it appropriately delegates field-level output details to the schema while explaining all behavioral nuances an agent needs to call the tool correctly.

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?

Schema coverage is 0%, but the description compensates completely. It explains where productIds come from, the server maximum and error recovery, the structure and B2C/B2B behavior of option_values, the role of channelId, and how variantCursor must be populated from nextVariantCursor. It even documents option value fields like optionEntityId and selectedOptionsKey.

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 opens with a specific verb and resource: 'Get the details of one or more products' including variants, options, and images. It clearly distinguishes itself from sibling tools by positioning search_products as the ID source and add_item_to_cart as the downstream consumer.

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?

Provides explicit when-to-use guidance: call search_products first, request only needed products, respect the ID limit, use option_values for one product with B2C, use channelId for B2B, and paginate with variantCursor only when nextVariantCursor exists. It also gives a direct filter-versus-pagination recommendation and warns against changing filters between pages.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources