From cbde7588b01f46e98dde0dd6adf7da50999fc0ac Mon Sep 17 00:00:00 2001 From: linq-sdks-bot Date: Wed, 5 Aug 2026 22:10:40 +0000 Subject: [PATCH 1/3] docs: clarify presigned url behavior and configuration --- packages/mcp-server/src/server.ts | 2 +- src/resources/attachments.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index 22cb350..2e42fa9 100644 --- a/packages/mcp-server/src/server.ts +++ b/packages/mcp-server/src/server.ts @@ -28,7 +28,7 @@ export const newMcpServer = async ({ new McpServer( { name: 'linqapp_sdk_api', - version: '0.33.1', + version: '0.34.0', }, { instructions: await getInstructions({ stainlessApiKey, customInstructionsPath }), diff --git a/src/resources/attachments.ts b/src/resources/attachments.ts index 3958713..d93c21e 100644 --- a/src/resources/attachments.ts +++ b/src/resources/attachments.ts @@ -435,7 +435,8 @@ export interface AttachmentCreateResponse { /** * Presigned URL for uploading the file. PUT the raw binary file content to this * URL with the `required_headers`. Do not JSON-encode or multipart-wrap the body. - * Expires after 15 minutes. + * Expires after 15 minutes. Treat the URL as opaque — the hostname depends on + * partner configuration and is the same across sandbox and production. */ upload_url: string; } From ca7f7f71fbe7f9d855f77fd5349c0c2daf1aef7f Mon Sep 17 00:00:00 2001 From: linq-sdks-bot Date: Sat, 8 Aug 2026 01:08:16 +0000 Subject: [PATCH 2/3] fix: clarify stop keyword behavior and matching rules --- src/resources/chats/chats.ts | 14 ++++++++------ src/resources/webhooks.ts | 21 ++++++++++++--------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/resources/chats/chats.ts b/src/resources/chats/chats.ts index e91117a..37fc8e6 100644 --- a/src/resources/chats/chats.ts +++ b/src/resources/chats/chats.ts @@ -392,9 +392,10 @@ export namespace Chat { * part of a longer one: `STOP` counts, `please stop` does not. Most keywords must * match exactly, including case. `OPT OUT` is the exception — it matches in any * casing, with or without the space or a hyphen, so `opt out`, `Opt-Out` and - * `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP`, - * or if they keep replying on the chat — sustained two-way conversation is treated - * as a sign the stop keyword was a false positive. + * `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP` — + * these match in any casing — or if they keep replying on the chat, since + * sustained two-way conversation is treated as a sign the stop keyword was a false + * positive. * * Linq enforces this: while a recipient is opted out, every send to them is * rejected with `403` (error code `2024`) before the message is queued, across @@ -880,9 +881,10 @@ export namespace ChatCreateResponse { * part of a longer one: `STOP` counts, `please stop` does not. Most keywords must * match exactly, including case. `OPT OUT` is the exception — it matches in any * casing, with or without the space or a hyphen, so `opt out`, `Opt-Out` and - * `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP`, - * or if they keep replying on the chat — sustained two-way conversation is treated - * as a sign the stop keyword was a false positive. + * `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP` — + * these match in any casing — or if they keep replying on the chat, since + * sustained two-way conversation is treated as a sign the stop keyword was a false + * positive. * * Linq enforces this: while a recipient is opted out, every send to them is * rejected with `403` (error code `2024`) before the message is queued, across diff --git a/src/resources/webhooks.ts b/src/resources/webhooks.ts index ab62932..c4c15e6 100644 --- a/src/resources/webhooks.ts +++ b/src/resources/webhooks.ts @@ -190,9 +190,10 @@ export namespace MessageEventV2 { * part of a longer one: `STOP` counts, `please stop` does not. Most keywords must * match exactly, including case. `OPT OUT` is the exception — it matches in any * casing, with or without the space or a hyphen, so `opt out`, `Opt-Out` and - * `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP`, - * or if they keep replying on the chat — sustained two-way conversation is treated - * as a sign the stop keyword was a false positive. + * `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP` — + * these match in any casing — or if they keep replying on the chat, since + * sustained two-way conversation is treated as a sign the stop keyword was a false + * positive. * * Linq enforces this: while a recipient is opted out, every send to them is * rejected with `403` (error code `2024`) before the message is queued, across @@ -1206,9 +1207,10 @@ export namespace MessageEditedWebhookEvent { * part of a longer one: `STOP` counts, `please stop` does not. Most keywords must * match exactly, including case. `OPT OUT` is the exception — it matches in any * casing, with or without the space or a hyphen, so `opt out`, `Opt-Out` and - * `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP`, - * or if they keep replying on the chat — sustained two-way conversation is treated - * as a sign the stop keyword was a false positive. + * `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP` — + * these match in any casing — or if they keep replying on the chat, since + * sustained two-way conversation is treated as a sign the stop keyword was a false + * positive. * * Linq enforces this: while a recipient is opted out, every send to them is * rejected with `403` (error code `2024`) before the message is queued, across @@ -1643,9 +1645,10 @@ export namespace ChatCreatedWebhookEvent { * part of a longer one: `STOP` counts, `please stop` does not. Most keywords must * match exactly, including case. `OPT OUT` is the exception — it matches in any * casing, with or without the space or a hyphen, so `opt out`, `Opt-Out` and - * `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP`, - * or if they keep replying on the chat — sustained two-way conversation is treated - * as a sign the stop keyword was a false positive. + * `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP` — + * these match in any casing — or if they keep replying on the chat, since + * sustained two-way conversation is treated as a sign the stop keyword was a false + * positive. * * Linq enforces this: while a recipient is opted out, every send to them is * rejected with `403` (error code `2024`) before the message is queued, across From 0389b1e9389701736c886deba42d9a3c7a28f2c3 Mon Sep 17 00:00:00 2001 From: linq-sdks-bot Date: Sun, 9 Aug 2026 20:11:17 +0000 Subject: [PATCH 3/3] fix: clarify stop keyword behavior for multi-chat replies --- src/resources/chats/chats.ts | 12 ++++++------ src/resources/webhooks.ts | 18 +++++++++--------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/resources/chats/chats.ts b/src/resources/chats/chats.ts index 37fc8e6..28572d2 100644 --- a/src/resources/chats/chats.ts +++ b/src/resources/chats/chats.ts @@ -393,9 +393,9 @@ export namespace Chat { * match exactly, including case. `OPT OUT` is the exception — it matches in any * casing, with or without the space or a hyphen, so `opt out`, `Opt-Out` and * `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP` — - * these match in any casing — or if they keep replying on the chat, since - * sustained two-way conversation is treated as a sign the stop keyword was a false - * positive. + * these match in any casing — or if they keep replying — replies in any + * conversation with you count, the same way the block does — since sustained + * two-way conversation is treated as a sign the stop keyword was a false positive. * * Linq enforces this: while a recipient is opted out, every send to them is * rejected with `403` (error code `2024`) before the message is queued, across @@ -882,9 +882,9 @@ export namespace ChatCreateResponse { * match exactly, including case. `OPT OUT` is the exception — it matches in any * casing, with or without the space or a hyphen, so `opt out`, `Opt-Out` and * `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP` — - * these match in any casing — or if they keep replying on the chat, since - * sustained two-way conversation is treated as a sign the stop keyword was a false - * positive. + * these match in any casing — or if they keep replying — replies in any + * conversation with you count, the same way the block does — since sustained + * two-way conversation is treated as a sign the stop keyword was a false positive. * * Linq enforces this: while a recipient is opted out, every send to them is * rejected with `403` (error code `2024`) before the message is queued, across diff --git a/src/resources/webhooks.ts b/src/resources/webhooks.ts index c4c15e6..c2038d8 100644 --- a/src/resources/webhooks.ts +++ b/src/resources/webhooks.ts @@ -191,9 +191,9 @@ export namespace MessageEventV2 { * match exactly, including case. `OPT OUT` is the exception — it matches in any * casing, with or without the space or a hyphen, so `opt out`, `Opt-Out` and * `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP` — - * these match in any casing — or if they keep replying on the chat, since - * sustained two-way conversation is treated as a sign the stop keyword was a false - * positive. + * these match in any casing — or if they keep replying — replies in any + * conversation with you count, the same way the block does — since sustained + * two-way conversation is treated as a sign the stop keyword was a false positive. * * Linq enforces this: while a recipient is opted out, every send to them is * rejected with `403` (error code `2024`) before the message is queued, across @@ -1208,9 +1208,9 @@ export namespace MessageEditedWebhookEvent { * match exactly, including case. `OPT OUT` is the exception — it matches in any * casing, with or without the space or a hyphen, so `opt out`, `Opt-Out` and * `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP` — - * these match in any casing — or if they keep replying on the chat, since - * sustained two-way conversation is treated as a sign the stop keyword was a false - * positive. + * these match in any casing — or if they keep replying — replies in any + * conversation with you count, the same way the block does — since sustained + * two-way conversation is treated as a sign the stop keyword was a false positive. * * Linq enforces this: while a recipient is opted out, every send to them is * rejected with `403` (error code `2024`) before the message is queued, across @@ -1646,9 +1646,9 @@ export namespace ChatCreatedWebhookEvent { * match exactly, including case. `OPT OUT` is the exception — it matches in any * casing, with or without the space or a hyphen, so `opt out`, `Opt-Out` and * `optout` all count. It clears if they later send `START`, `OPTIN`, or `UNSTOP` — - * these match in any casing — or if they keep replying on the chat, since - * sustained two-way conversation is treated as a sign the stop keyword was a false - * positive. + * these match in any casing — or if they keep replying — replies in any + * conversation with you count, the same way the block does — since sustained + * two-way conversation is treated as a sign the stop keyword was a false positive. * * Linq enforces this: while a recipient is opted out, every send to them is * rejected with `403` (error code `2024`) before the message is queued, across