Skip to main content
Glama
dipseth

google-workspace-unlimited

Send Dynamic Card with NLP

send_dynamic_card

Create and send Google Chat cards with precise structure using DSL notation. Define sections, text, buttons, grids, or carousels for clear visual communication.

Instructions

Send cards to Google Chat using DSL notation for precise structure control. REQUIRED: Use DSL symbols in card_description to define card structure. Common patterns: §[δ] = text card, §[δ, Ƀ[ᵬ×2]] = text + 2 buttons, §[ℊ[ǵ×4]] = grid with 4 items. DSL structure using symbols. Examples: '§[δ, Ƀ[ᵬ×2]]' = Section + text + 2 buttons, 'C_5[C_6×3]' = Carousel with 3 cards. §=Section, δ=DecoratedText, Ƀ=ButtonList, ᵬ=Button, ℊ=Grid, ǵ=GridItem, C_5=Carousel, C_6=CarouselCard, ŋ=NestedWidget. Read skill://gchat-cards/ for full reference.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
space_idNoChat space ID (e.g., 'spaces/AAAA1234'). Optional when using webhook (most common). Required only for API delivery.
thread_keyNoThread key for replies
card_paramsNoExplicit overrides: title, subtitle, text, buttons, images. Supports DSL symbol keys (e.g. δ for items, ᵬ for buttons) with optional _shared/_items merging: {"δ": {"_shared": {...}, "_items": [...]}}. The 'text' field supports Jinja filters ({{ 'text' | success_text }}) and raw HTML (<font color="#hex">text</font>). Message-level fields: 'message_text' (plain text above card), 'fallback_text' (notification text), 'accessory_widgets' (buttons outside card: [{buttonList: {buttons: [{text, url}]}}]).
webhook_urlNoWebhook URL. Defaults to MCP_CHAT_WEBHOOK env var if not provided.
card_descriptionYesIMPORTANT: Start with DSL symbols to define card structure. Without DSL, cards render as simple text only. DSL Examples: §[δ] = Section with DecoratedText, §[δ, Ƀ[ᵬ×2]] = text + 2 buttons, §[δ×3] = 3 text items, §[ℊ[ǵ×4]] = grid with 4 items. Provide content in card_params: title, subtitle, text, buttons=[{text, url}]. Jinja styling in text: {{ 'Online' | success_text }}, {{ text | color('#hex') }}. DSL structure using symbols. Examples: '§[δ, Ƀ[ᵬ×2]]' = Section + text + 2 buttons, 'C_5[C_6×3]' = Carousel with 3 cards. §=Section, δ=DecoratedText, Ƀ=ButtonList, ᵬ=Button, ℊ=Grid, ǵ=GridItem, C_5=Carousel, C_6=CarouselCard, ŋ=NestedWidget. Read skill://gchat-cards/ for full reference.
draft_variationsNoWhen true, generate 3 draft card variations (Conservative, Enhanced, Creative) and send them to the Chat space in a shared thread for comparison instead of sending the original card. Uses a tool-equipped sampling agent for informed design.
user_google_emailNoUse 'me' or 'myself' for auto-resolution to authenticated user, or provide specific email address. If None, uses current authenticated user (auto-injected by middleware).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoError message if the operation failed
messageYesHuman-readable status message describing the result
spaceIdNoTarget Google Chat space ID (optional for webhook delivery)
successYesWhether the card was successfully created and sent
cardTypeYesType of card component used: 'class', 'function', 'simple_fallback', etc.
messageIdNoGoogle Chat message ID (format: spaces/{space}/messages/{message})
partsSentNoNumber of card parts sent (>1 if payload was auto-split due to size)
threadKeyNoThread key if message was sent as a thread reply
userEmailYesGoogle email address used for authentication
createTimeNoTimestamp when the message was created (from API response)
httpStatusNoHTTP status code from webhook delivery (200=success, 429=rate limited)
webhookUrlNoWebhook URL used for delivery (if webhook method)
dslDetectedNoDSL structure detected in card_description (if any)
inputMappingNoHow card_params inputs were distributed to components
suggestedDslNoSuggested DSL when params provided but no DSL in description
componentInfoNoDetails about the ModuleWrapper component search and matching
dslValidationNoDSL validation results if DSL detected in description
nlpExtractionNoDetails about what was extracted from the natural language card_description
alternativeDslNoAlternative valid DSL patterns using similar components. Use these for inspiration on different card structures.
deliveryMethodYesHow the card was delivered: 'api' for authenticated Chat API, 'webhook' for webhook URL
expectedParamsNoWhat card_params this DSL structure accepts
splitThreadKeyNoThread key linking multi-part card messages together
cardDescriptionYesThe original card_description input that was processed
validationIssuesNoList of validation issues if validation failed
validationPassedNoWhether pre-send card content validation passed (prevents blank cards)
renderedDslNotationNoDSL symbol notation representing the rendered card structure. Use this to learn the DSL syntax for future calls. Format: §[components] where § is Section, δ is DecoratedText, Ƀ is ButtonList, etc.
jinjaTemplateAppliedNoWhether Jinja2 template styling was applied to card content
Behavior4/5

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

Annotations indicate non-read-only, not idempotent, not destructive. Description adds context: requires DSL for structured cards, supports webhook vs API delivery, and includes draft_variations behavior. No contradictions with annotations.

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 description is verbose with repeated DSL examples and symbols. While front-loaded with the REQUIRED directive, it could be more concise by removing redundant explanations.

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?

Given the complexity of DSL and 7 parameters, the description covers structure, examples, and usage details. Output schema exists (not shown) so return value explanation is not needed. Lacks error handling or rate limit info, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds significant meaning beyond schema: explains DSL symbols, examples, Jinja styling, and overrides via card_params. This elevates understanding beyond the basic parameter descriptions.

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 clearly states 'Send cards to Google Chat using DSL notation for precise structure control,' defining a specific verb (send) and resource (dynamic cards). It distinguishes from sibling tools like send_message by focusing on card structure via DSL.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains how to use DSL but does not provide when-to-use or when-not-to-use guidance relative to alternatives like send_message. No explicit comparisons or exclusions are given.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dipseth/google_workspace_fastmcp2'

If you have feedback or need assistance with the MCP directory API, please join our Discord server