# site\_form\_declare

Source: <https://telegafirst.com/docs/mcp-tool-site-form-declare>
Locale: ru
releaseGitSha: ea133cd4ad87fe549ef000b139be145be9bd1717
sourceContentDigest: 696e139d4d34df98179922b5477926cb3ef3eb55ef2d14bc78b26e70f0f7b0c3
Version: 2

# site\_form\_declare

Declare a form the business's web pages submit to, and get the address they post to. DO THIS BEFORE BUILDING THE PAGES: the call returns \`clientSlug\` and \`code\`, the pages POST to \`<https://fn.telegafirst.ru/f/\\{clientSlug\\}/\\{code\\}\\`> (\`fn.telegafirst.com\` when \`zone\` is \`com\`). That URL cannot exist before this call. It also returns \`seqNum\`: pass it back to UPDATE this declaration — \`clientSlug\` + \`code\` stay the same, so re-running setup never breaks live pages. Omit \`seqNum\` to create a NEW form with a NEW address. It configures the ENVELOPE (delivery, allowed submitter origins, captcha), NOT the form's fields: draw any inputs in your HTML, stored exactly as submitted. \`destinations\` lists delivery targets, one of: \`{"kind":"telegram","topicId":\<topic id>}\`, \`{"kind":"webhook","url":"https\://…"}\`, or \`{"kind":"external\_api","url":"https\://…","method":"POST","headerName":"X-Api-Key","secretName":"\<name from secret\_put>"}\` — never a literal credential, only the NAME of a stored secret. \`allowedOrigins\` must list the site's own addresses (\`<https://acme.ru\\`>), or no submission is accepted. To stop accepting submissions, re-declare with \`enabled: false\` — never delete (collected answers would lose the config that explains them). AFTER A SUBMISSION the \`variants\` ladder runs: each names a prepared funnel step by \`stepSeqNum\` plus a condition — \`when\` for \`funnelMode: "deterministic"\` (first match by \`sort\` order wins) or \`hint\` (plain language) for \`funnelMode: "ai\_agent"\`; exactly one per entry. \`defaultStepSeqNum\` is used when nothing matches. \`callOperatorOnSubmit: true\` (or an entry's \`callsOperator: true\`) calls a live operator. ⚠️ The ladder is DECLARED, not patched: omitting \`variants\` on a re-declaration REMOVES it — always send the complete list. \`submissionSchema\` is OPTIONAL, e.g. \`\[{"name":"phone","type":"tel","required":true}]\`; omit it and any fields are accepted. Pass it only to validate: a non-matching submission is refused, naming the wrong field; names must match your HTML inputs.

## Права и условия

required\_scopes: ALL.

| Поле | Значение |
| - | - |
| description | "Declare a form the business's web pages submit to, and get the address they post to. DO THIS BEFORE BUILDING THE PAGES: the call returns \`clientSlug\` and \`code\`, the pages POST to \`<https://fn.telegafirst.ru/f/\\{clientSlug\\}/\\{code\\}\\`> (\`fn.telegafirst.com\` when \`zone\` is \`com\`). That URL cannot exist before this call. It also returns \`seqNum\`: pass it back to UPDATE this declaration — \`clientSlug\` + \`code\` stay the same, so re-running setup never breaks live pages. Omit \`seqNum\` to create a NEW form with a NEW address. It configures the ENVELOPE (delivery, allowed submitter origins, captcha), NOT the form's fields: draw any inputs in your HTML, stored exactly as submitted. \`destinations\` lists delivery targets, one of: \`{\\"kind\\":\\"telegram\\",\\"topicId\\":\<topic id>}\`, \`{\\"kind\\":\\"webhook\\",\\"url\\":\\"https\://…\\"}\`, or \`{\\"kind\\":\\"external\_api\\",\\"url\\":\\"https\://…\\",\\"method\\":\\"POST\\",\\"headerName\\":\\"X-Api-Key\\",\\"secretName\\":\\"\<name from secret\_put>\\"}\` — never a literal credential, only the NAME of a stored secret. \`allowedOrigins\` must list the site's own addresses (\`<https://acme.ru\\`>), or no submission is accepted. To stop accepting submissions, re-declare with \`enabled: false\` — never delete (collected answers would lose the config that explains them). AFTER A SUBMISSION the \`variants\` ladder runs: each names a prepared funnel step by \`stepSeqNum\` plus a condition — \`when\` for \`funnelMode: \\"deterministic\\"\` (first match by \`sort\` order wins) or \`hint\` (plain language) for \`funnelMode: \\"ai\_agent\\"\`; exactly one per entry. \`defaultStepSeqNum\` is used when nothing matches. \`callOperatorOnSubmit: true\` (or an entry's \`callsOperator: true\`) calls a live operator. ⚠️ The ladder is DECLARED, not patched: omitting \`variants\` on a re-declaration REMOVES it — always send the complete list. \`submissionSchema\` is OPTIONAL, e.g. \`\[{\\"name\\":\\"phone\\",\\"type\\":\\"tel\\",\\"required\\":true}]\`; omit it and any fields are accepted. Pass it only to validate: a non-matching submission is refused, naming the wrong field; names must match your HTML inputs." |
| domain | "site" |
| name | "site\_form\_declare" |
| platform\_version | "1.0.20" |
| required\_scopes | \["site:write"] |
| risk | "write" |
| scope | "site:write" |
| title | "Site Form Declare" |

## Входные параметры

[site\_form\_declare: inputSchema](https://telegafirst.com/docs/schema-1ca9c8c2d2df1437f2b3f4e8c05ecce59c4e34e34c07913309ec45654f513bb3)

## Результат

null
