{"id":87167,"plugin_id":"plugin_asdk_app_6ac516b7f5348191940623ad769de125","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-09T12:07:51.811Z","digest":"da26766a17224f4ba809671fec9cfdce245225b97ce1259264e5ce30cd38b660","against":null,"payload":{"description":"Find, filter, and review people and companies in Nimble, including who has not been contacted recently and likely duplicates of a contact. Use for contact lists, follow-up planning, relationship recency, tags, owners, or field-based contact lookups. This skill reads contacts; it does not create, update, tag, or merge them.","included_files":[],"name":"find-contacts-in-nimble","skill_md_contents":"---\nname: find-contacts-in-nimble\ndescription: Find, filter, and review people and companies in Nimble, including who has not been contacted recently and likely duplicates of a contact. Use for contact lists, follow-up planning, relationship recency, tags, owners, or field-based contact lookups. This skill reads contacts; it does not create, update, tag, or merge them.\n---\n\n# Find contacts in Nimble\n\nUse the Nimble MCP connector as the source of truth. Discover real IDs and field names; never invent them.\n\n## Build the search\n\n- Put every requested constraint into one `search_contacts` query, combining terms with `and`, `or`, and `not`.\n  Use `__any` with `contain` for a loose name or company lookup, and exact identifiers such as email or domain when\n  the user provides them.\n- Call `get_contact_search_field_metadata` when a field name, operator, or custom field handle is uncertain, and use the\n  returned `search_name`. Sort only by fields it marks `sortable`.\n- Use `record type` to separate people from companies when the request implies one of them.\n\n## Relationship recency\n\n- \"By me\" means `user last contacted`; \"by anyone on the team\" means `company last contacted`. Ask only when the\n  difference matters and the request does not make it clear.\n- Last contacted reflects emails, calls, past calendar events, and activity types configured to count. Notes, tags,\n  and field edits do not update it.\n- For \"not contacted in N days\", use `not_in_the_last` with `{\"unit\": \"day\", \"quantity\": N}`. It matches only contacts\n  that were contacted at some point; add `{\"is_empty\": true}` on the same field in an `or` when never-contacted contacts\n  belong in the answer, and say which case each contact falls into.\n- Sort by the same field ascending to list the longest-neglected contacts first, or descending for the most recent.\n- Compact results include `last_contacted_by_me` and `last_contacted_by_team`; a missing value means no recorded\n  interaction, not an unknown date.\n\n## Read the results\n\n- Start with the default compact response. It keeps common fields and at most ten tags; `tags_total` shows that more\n  exist. Before reasoning about all tags of a contact, read it with `get_single_contact`.\n- Request `response_format=\"full\"` only when custom fields of several matches are required; full pages are large.\n- Keep the same query and sort while paging and use `meta` to report how many contacts matched. Never present one page\n  as the complete result.\n- Clearly separate an empty result from a field that was not included in the selected response format.\n\n## Duplicates\n\n- To check one contact for duplicates, call `find_contact_duplicates` with its ID. Explain each candidate with its\n  `matched_fields`; `likeness` ranks candidates but does not prove they are the same person or company.\n- Use `save-contact-to-nimble` when the user wants to merge records or change a contact.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}