Bug Report: add_smart_list_rule fails for Marketo system boolean fields | Community
Skip to main content
Level 2
July 1, 2026
Question

Bug Report: add_smart_list_rule fails for Marketo system boolean fields

  • July 1, 2026
  • 1 reply
  • 16 views

What I tested

We were using the MCP to bulk-update smart lists across 59 nested programs in an engagement program. The goal was to add two filters to each smart campaign's smart list: an Email Address filter and a Marketing Suspended filter, then switch the filter logic to ANY.

What worked

Adding string-type filters works great. We successfully added Email Address (not contains[".edu", ".org"]) across all 59 smart lists using add_smart_list_rule followed by update_smart_list_rule. Filter logic updates via update_smart_list_filter_logic also worked perfectly. This was a huge time saver.

The bug

add_smart_list_rule returns error 709 "Smart List Rule Type Unsupported" for any Marketo system boolean field. We tested:

  • Marketing Suspended (id: 85)
  • Email Suspended (id: 123)
  • Unsubscribed (id: 79)
  • Black Listed (id: 87)
  • Do Not Call (id: 82)
  • Email Invalid (id: 77)
  • Email Invalid Cause (id: 78, string type but system-managed)

All return the same 709 error regardless of what we pass for ruleTypeindex, or isTrigger.

Key finding

Custom boolean fields work fine with the same parameters. We tested CF_First_Gen_Flag (id: 843) and CF_Athletic_Recruit_Flag (id: 808) — both added successfully. So the restriction is specific to Marketo's built-in system fields, not boolean data types in general.

Additional note

Since delete_smart_list_rule is disabled in the beta, there's no API cleanup path when an add fails or leaves a stray rule — it requires manual removal in the Marketo UI. Worth considering alongside this bug since the two issues compound each other.

Expected result: Filter added, same as custom boolean fields

Actual result: 709 "Smart List Rule Type Unsupported"

Workaround: System boolean filters must be added manually in the Marketo UI. We ended up with a hybrid approach — MCP for everything it supports, manual UI work for the blocked fields.

1 reply

Level 3
July 12, 2026

Ty for sharing detailed findings ​@AntFig. Marketo throws the 709 "Smart List Rule Type Unsupported" error on built-in boolean fields.

The Technical Root Cause

If you query Marketo's schema using describe_lead, the smoking gun appears in the metadata for these specific fields. For example, system fields like marketingSuspended return:

JSON:

"dataType": "boolean",
"searchable": false
  • Custom Booleans vs. System Booleans: When you create a custom boolean field, Marketo provisions it as "searchable": true at the API layer. The Asset API gateway relies strictly on this flag. Because core system fields are explicitly set to searchable: false to protect database indexing performance, the add_smart_list_rule endpoint outright rejects them.

  • The Downstream Value Bug: This also explains why attempting an add_smart_list_rule with values like ["true"] or [true] fails with compounding syntax errors (709 Db attribute not valid vs 709 Invalid Value Data Type). The API parser cannot resolve input values for a rule structure that it refuses to validate in the first place.

  • The Beta Compounder: Because delete_smart_list_rule is currently disabled in the beta, any failed rule creation or partial modification leaves a "stray" state that forces you back into the UI for cleanup.

Scalable Workarounds (To Bypass the Manual UI Grind)

If you are dealing with large-scale nested programs (like 59-program engagement matrix) and need to automate your smart list updates, you can use these two design patterns to bypass the API limitation.

The Master Smart List Reference Injection:

Instead of trying to force the API to handle system fields directly inside every single smart list, abstract the logic entirely.

  1. Manual Setup (One-Time): Create a single Master Smart List manually in the Marketo UI (e.g., 00_Global_Master_Exclusions). Add all your system boolean filters there (Marketing Suspended = true, Unsubscribed = true, etc.).

  2. API Automation: Use the MCP to programmatically inject a Member of Smart List filter across your 59 smart lists, passing the ID of your master list.

  • Why it works: The Asset API fully supports adding and updating Member of Smart List rules (which are handled as string/ID lookups) without throwing the 709 error.

By adjusting your program architecture to rely on reference lists or searchable custom fields, you can fully leverage the speed of the MCP API without getting blocked by hardcoded database restrictions.

Found this helpful? Mark the thread as solved so other community members can quickly locate the answer.