Skip to main content
Glama

Import contracts

clm_import_contracts
Idempotent

Add files (disk, Drive, chat or URLs); default to Contracko's purpose-built term extraction. ChatGPT attachments: Import attached files. One contract per document. For related documents, use Add contract documents. No Parser credits. Claude chat: offered panel first. Other clients: prefer prepared uploads, base64 (up to 35 MiB/file), or HTTPS URLs. Returns a processing handle for status, progress and extracted summaries. Related classification does not attach documents.

Input Schema

NameRequiredDescriptionDefault
filesYesOriginal primary files; one contract each
folderIdNoVisible folder; omit for unfiled org root. Hidden/invalid IDs reject all.
allowDuplicateNoAllow duplicate linked document.
idempotencyKeyYesRetry key for this exact request

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • changedInput schema / properties / allowDuplicate / description
      Previous value: -"Set to true only after the user has been told the document is already associated with a contract and has asked for it to be added anyway."New value: +"Allow duplicate linked document."
    • changedInput schema / properties / files / description
      Previous value: -"Original primary documents as inline base64 (keep the encoded total under 25,690,112 characters) or a remote download URL (files up to 25 MiB)"New value: +"Original primary files; one contract each"
    • changedInput schema / properties / files / items / oneOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "dataBase64": {
      -        "maxLength": 25690112,
      -        "minLength": 4,
      -        "type": "string"
      -      },
      -      "fileName": {
      -        "maxLength": 120,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "kind": {
      -        "const": "inline",
      -        "type": "string"
      -      },
      -      "mimeType": {
      -        "maxLength": 120,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "fileName",
      -      "mimeType",
      -      "dataBase64"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "downloadUrl": {
      -        "format": "uri",
      -        "type": "string"
      -      },
      -      "expiresAt": {
      -        "format": "date-time",
      -        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -        "type": "string"
      -      },
      -      "fileName": {
      -        "maxLength": 120,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "fileSize": {
      -        "exclusiveMinimum": 0,
      -        "maximum": 2147483647,
      -        "type": "integer"
      -      },
      -      "kind": {
      -        "const": "remote",
      -        "type": "string"
      -      },
      -      "mimeType": {
      -        "maxLength": 120,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "fileName",
      -      "mimeType",
      -      "fileSize",
      -      "downloadUrl"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "description": "Document PUT to prepared destination",
      +    "properties": {
      +      "fileName": {
      +        "description": "Name + extension",
      +        "maxLength": 120,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "fileSize": {
      +        "description": "Bytes from upload preparation",
      +        "exclusiveMinimum": 0,
      +        "maximum": 52428800,
      +        "type": "integer"
      +      },
      +      "kind": {
      +        "const": "upload",
      +        "type": "string"
      +      },
      +      "mimeType": {
      +        "description": "MIME type from upload preparation",
      +        "maxLength": 200,
      +        "minLength": 1,
      +        "pattern": "^[\\w.+-]+\\/[\\w.+-]+$",
      +        "type": "string"
      +      },
      +      "uploadReference": {
      +        "description": "Opaque prepared-upload reference",
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "uploadReference",
      +      "fileName",
      +      "mimeType",
      +      "fileSize"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "description": "Base64; <=35 MiB decoded/file",
      +    "properties": {
      +      "dataBase64": {
      +        "maxLength": 50221273,
      +        "minLength": 4,
      +        "type": "string"
      +      },
      +      "fileName": {
      +        "maxLength": 120,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "kind": {
      +        "const": "inline",
      +        "type": "string"
      +      },
      +      "mimeType": {
      +        "maxLength": 120,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "fileName",
      +      "mimeType",
      +      "dataBase64"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "description": "HTTPS download, <=50 MiB/file",
      +    "properties": {
      +      "downloadUrl": {
      +        "format": "uri",
      +        "type": "string"
      +      },
      +      "expiresAt": {
      +        "format": "date-time",
      +        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +        "type": "string"
      +      },
      +      "fileName": {
      +        "maxLength": 120,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "fileSize": {
      +        "exclusiveMinimum": 0,
      +        "maximum": 2147483647,
      +        "type": "integer"
      +      },
      +      "kind": {
      +        "const": "remote",
      +        "type": "string"
      +      },
      +      "mimeType": {
      +        "maxLength": 120,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "fileName",
      +      "mimeType",
      +      "fileSize",
      +      "downloadUrl"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties / folderId
      Added value: +{
      +  "description": "Visible folder; omit for unfiled org root. Hidden/invalid IDs reject all.",
      +  "format": "uuid",
      +  "type": "string"
      +}
    • changedInput schema / properties / idempotencyKey / description
      Previous value: -"Stable retry key for this exact import request"New value: +"Retry key for this exact request"
    • changedOutput schema / (root)
      Previous value: -{
      -  "$schema": "http://json-schema.org/draft-07/schema#",
      -  "additionalProperties": false,
      -  "properties": {
      -    "completedAt": {
      -      "anyOf": [
      -        {
      -          "allOf": [
      -            {
      -              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -              "type": "string"
      -            },
      -            {
      -              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -              "type": "string"
      -            }
      -          ],
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ]
      -    },
      -    "createdAt": {
      -      "allOf": [
      -        {
      -          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -          "type": "string"
      -        },
      -        {
      -          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -          "type": "string"
      -        }
      -      ],
      -      "type": "string"
      -    },
      -    "importId": {
      -      "allOf": [
      -        {
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        {
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        }
      -      ],
      -      "type": "string"
      -    },
      -    "items": {
      -      "items": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "attemptCount": {
      -            "maximum": 9007199254740991,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "completedAt": {
      -            "anyOf": [
      -              {
      -                "allOf": [
      -                  {
      -                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                    "type": "string"
      -                  },
      -                  {
      -                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                    "type": "string"
      -                  }
      -                ],
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "contractFileId": {
      -            "anyOf": [
      -              {
      -                "allOf": [
      -                  {
      -                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                    "type": "string"
      -                  },
      -                  {
      -                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                    "type": "string"
      -                  }
      -                ],
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "contractId": {
      -            "anyOf": [
      -              {
      -                "allOf": [
      -                  {
      -                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                    "type": "string"
      -                  },
      -                  {
      -                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                    "type": "string"
      -                  }
      -                ],
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "createdAt": {
      -            "allOf": [
      -              {
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              },
      -              {
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              }
      -            ],
      -            "type": "string"
      -          },
      -          "errorCode": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "fileName": {
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "fileSize": {
      -            "maximum": 9007199254740991,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "id": {
      -            "allOf": [
      -              {
      -                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                "type": "string"
      -              },
      -              {
      -                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                "type": "string"
      -              }
      -            ],
      -            "type": "string"
      -          },
      -          "mimeType": {
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "position": {
      -            "maximum": 9007199254740991,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "retryable": {
      -            "type": "boolean"
      -          },
      -          "status": {
      -            "enum": [
      -              "pending",
      -              "storing",
      -              "queued",
      -              "extracting",
      -              "analyzing",
      -              "completed",
      -              "failed"
      -            ],
      -            "type": "string"
      -          },
      -          "updatedAt": {
      -            "allOf": [
      -              {
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              },
      -              {
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -                "type": "string"
      -              }
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "position",
      -          "fileName",
      -          "mimeType",
      -          "fileSize",
      -          "status",
      -          "contractId",
      -          "contractFileId",
      -          "errorCode",
      -          "retryable",
      -          "attemptCount",
      -          "createdAt",
      -          "updatedAt",
      -          "completedAt"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "pollAfterMs": {
      -      "anyOf": [
      -        {
      -          "exclusiveMinimum": 0,
      -          "maximum": 9007199254740991,
      -          "type": "integer"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ]
      -    },
      -    "status": {
      -      "enum": [
      -        "accepted",
      -        "processing",
      -        "completed",
      -        "partial_failure",
      -        "failed"
      -      ],
      -      "type": "string"
      -    },
      -    "totalItems": {
      -      "exclusiveMinimum": 0,
      -      "maximum": 9007199254740991,
      -      "type": "integer"
      -    },
      -    "updatedAt": {
      -      "allOf": [
      -        {
      -          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -          "type": "string"
      -        },
      -        {
      -          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -          "type": "string"
      -        }
      -      ],
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "importId",
      -    "status",
      -    "totalItems",
      -    "createdAt",
      -    "updatedAt",
      -    "completedAt",
      -    "pollAfterMs",
      -    "items"
      -  ],
      -  "type": "object"
      -}New value: +null
  2. First observed

TDQS

A4/5.0
Behavior4/5

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

Adds substantive behavior beyond annotations: default term extraction, no Parser credit consumption, a processing handle for status/progress/extracted summaries, and the rule that related classification does not attach documents. It does not detail permission requirements or duplicate-handling consequences, but annotations already cover idempotency and non-destructiveness.

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

Conciseness3/5

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

The content is compact but poorly structured as a single dense paragraph mixing client-specific instructions, limits, alternatives, and return behavior. Some points ('One contract per document' and 'Related classification does not attach documents') overlap, reducing front-loading and scanability.

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?

Covers the key operational context for an import mutation: source types, client-specific delivery, file-size constraints, the alternative for related documents, and the returned processing handle because no output schema exists. It could be stronger on error/retry semantics, but the combination of schema and description is nearly complete.

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%, so all four parameters are documented in the schema, including the three file kinds, folderId, allowDuplicate, and idempotencyKey. The description reinforces file limits and preferred upload paths but adds little new meaning beyond the schema, making 3 the appropriate baseline.

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?

The description states the action (adding files) and outcome (purpose-built term extraction, one contract per document), and explicitly routes related-document imports to clm_add_contract_documents. However, the core object 'contract' is implied rather than stated in the opening sentence, so it is clear but not maximally crisp.

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 alternatives (use Add contract documents for related documents), client-specific pathways (ChatGPT attachments, Claude chat panel, prepared uploads/base64/HTTPS for other clients), and notes that no Parser credits are consumed. This is actionable routing guidance rather than general context.

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.