Write
add_card
Adds a new card to a stack at the end or after a specific card. Basic, about, service, and testimonial kinds are free; conversion kinds (contact, book-me, embed-booking, buy, email) require Pro.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| outlineId | string | — | Outline ID. Omit to default to the authenticated creator's own outline. |
| stackId | string | Yes | ID of the stack to add the card to. Get this from list_cards or get_profile. |
| afterCardId | string | — | Insert the new card after this card ID. If omitted, appends to the end of the stack. |
| kind | string | — | Card template kind. Default: basic. Free: basic, about, service, testimonial. Pro required: contact, book-me, embed-booking, buy, email. |
Response
| Field | Type | What it means |
|---|---|---|
| outlineId | string | The resolved outline ID — matches the authenticated creator if outlineId was omitted. |
| stackId | string | The stack the card was added to. |
| card | object | The newly created card with its stable cardId, kind, and empty content fields ready to fill with update_card. |
| card.cardId | string | The new card's stable ID — use this immediately with update_card to set content. |
| card.kind | string | The card template kind that was set. |
| card.heading | string | Empty string on creation — fill with update_card before publishing. |
| card.subheading | string | Empty string on creation — fill with update_card before publishing. |
| card.description | string | Empty string on creation — fill with update_card before publishing. |
Example
Request
json
{
"stackId": "stack_abc",
"kind": "service",
"afterCardId": "card_001"
}Response
json
{
"outlineId": "42",
"stackId": "stack_abc",
"card": {
"cardId": "card_xyz789",
"kind": "service",
"heading": "",
"subheading": "",
"description": ""
}
}When to use
After getting the current profile structure with get_profile or list_cards, use add_card to insert new cards into an existing stack. Always follow with update_card to set the heading, subheading, and description — new cards start completely empty. Use afterCardId to control placement precisely within the stack; omit it to append to the end.
Check get_guidance first to confirm which card kinds are available for the creator's plan — conversion kinds return FORBIDDEN_FEATURE for free accounts.
Gotchas
Watch out
- The new card starts completely empty — always follow
add_cardwithupdate_cardto fill content before publishing. - You need the
stackIdfirst — calllist_cardsorget_profileto get it. - Conversion kinds (
contact,book-me,embed-booking,buy,email) returnFORBIDDEN_FEATUREfor free users. Checkget_guidancefor the free vs Pro card kind list. afterCardIdmust exist in the specified stack or you getNOT_FOUND.- The response is wrapped in MCP content arrays (
content[0].textis the JSON string) — parsetextbefore accessingoutlineId,stackId, orcard.