Productivity
Overview
ConnectLinx is an AI command center for real estate agents, brokers, and teams. Connect your ConnectLinx account and run your business from chat: review and update your listings for rent and for sale across both residential and commercial, triage and reply to leads, manage showings, move deals through your pipeline, and stay on top of your CRM, calendar, and team. It shows you exactly what you see when you log in, no more and no less. Writes are scoped and safe (no delete tools, drafts stay drafts) and outbound email always asks you to confirm before sending. Strongest in the South Florida market with direct agent and landlord inventory.
Tools
ADDS new photos to a rental listing you manage by downloading up to 12 PUBLIC image URLs (direct links, no redirects): validated, watermarked, appended after existing photos. This only UPLOADS new images — to change the ORDER of photos already on the listing use reorder_listing_photos, and to pick the cover use set_cover_photo. No URLs to give? get_listing_details / create_draft_listing return a one-tap phone upload link instead.
add_listing_photos
ChatGPTADDS new photos to a rental listing you manage by downloading up to 12 PUBLIC image URLs (direct links, no redirects): validated, watermarked, appended after existing photos. This only UPLOADS new images — to change the ORDER of photos already on the listing use reorder_listing_photos, and to pick the cover use set_cover_photo. No URLs to give? get_listing_details / create_draft_listing return a one-tap phone upload link instead.
command_center_status
ChatGPTPing after reconnect. Returns version, tool counts, scopes_granted vs scopes_missing. Call this FIRST if tools look stale or missing.
command_center_status
ChatGPTPing after reconnect. Returns version, tool counts, scopes_granted vs scopes_missing. Call this FIRST if tools look stale or missing.
create_or_update_deal
ChatGPTCreates a deal in your pipeline or advances an existing one. Natural language works: "under deposit" → holding_deposit, "under contract" → under_contract (residential sale). If listing_id has exactly one open deal it is advanced; pass deal_id to target a specific deal; otherwise a new deal is created (tenant_name required for new deals).
create_or_update_deal
ChatGPTCreates a deal in your pipeline or advances an existing one. Natural language works: "under deposit" → holding_deposit, "under contract" → under_contract (residential sale). If listing_id has exactly one open deal it is advanced; pass deal_id to target a specific deal; otherwise a new deal is created (tenant_name required for new deals).
create_showing
ChatGPTUses mls_listings.id (CLXexchange). Auto-approved for listing agent.
create_showing
ChatGPTUses mls_listings.id (CLXexchange). Auto-approved for listing agent.
discover_tools
ChatGPTLists EVERY tool this ConnectLinx connector can run (the full catalog), each with a one-line description, so you can find the right tool on demand. The default tool list is kept small for speed; call this whenever the task needs something beyond the handful of tools already shown (e.g. calendar, deal pipeline depth, document/e-sign work, autopilot, people/CRM). Pass an optional
query to filter by keyword (matches the tool name OR its description). Then run the tool you found with run_tool. Tools you are not scoped for are still listed but marked requires_scope so you know to reconnect with that permission.discover_tools
ChatGPTLists EVERY tool this ConnectLinx connector can run (the full catalog), each with a one-line description, so you can find the right tool on demand. The default tool list is kept small for speed; call this whenever the task needs something beyond the handful of tools already shown (e.g. calendar, deal pipeline depth, document/e-sign work, autopilot, people/CRM). Pass an optional
query to filter by keyword (matches the tool name OR its description). Then run the tool you found with run_tool. Tools you are not scoped for are still listed but marked requires_scope so you know to reconnect with that permission.find_listing
ChatGPTFAST way to turn a street address (or part of one) into a listing_id when the user names a property instead of an ID. Owner-scoped: only searches listings in this account. Returns the matching {id, address, type}; if several match it returns the candidates so you can ask which one. Use this FIRST whenever the user says "the Main St listing" / "123 Oak Ave" and you do not already have the listing_id — do not list every listing and scan by hand.
find_listing
ChatGPTFAST way to turn a street address (or part of one) into a listing_id when the user names a property instead of an ID. Owner-scoped: only searches listings in this account. Returns the matching {id, address, type}; if several match it returns the candidates so you can ask which one. Use this FIRST whenever the user says "the Main St listing" / "123 Oak Ave" and you do not already have the listing_id — do not list every listing and scan by hand.
get_dashboard_summary
ChatGPTOne-call overview: listings, accurate lead counts (total/today/7d/30d/unread), deals, showings. Prefer get_today_actions for the battle board.
get_dashboard_summary
ChatGPTOne-call overview: listings, accurate lead counts (total/today/7d/30d/unread), deals, showings. Prefer get_today_actions for the battle board.
get_lead_stats
ChatGPTReturns FULL lead counts from the database (not capped at 500). Includes total, unread, today, last 24h/7d/30d. Optional since/until dates (Y-m-d). Use this when asked "how many leads came in today/this week".
get_lead_stats
ChatGPTReturns FULL lead counts from the database (not capped at 500). Includes total, unread, today, last 24h/7d/30d. Optional since/until dates (Y-m-d). Use this when asked "how many leads came in today/this week".
get_listing_access_code
ChatGPTReturns the lockbox or showing access code, lockbox type/location, and access notes when the caller is allowed to reveal them. Resolve by listing_id or by address (e.g. "30 Daisy"). Owner/admin users can manage their saved codes; team-agent reveal requires Exchange listing ownership or the same approved showing window enforced by CLXexchange get_lockbox. Use when the user asks for the lockbox code, gate/door code, or how to get into a property to show it.
get_listing_access_code
ChatGPTReturns the lockbox or showing access code, lockbox type/location, and access notes when the caller is allowed to reveal them. Resolve by listing_id or by address (e.g. "30 Daisy"). Owner/admin users can manage their saved codes; team-agent reveal requires Exchange listing ownership or the same approved showing window enforced by CLXexchange get_lockbox. Use when the user asks for the lockbox code, gate/door code, or how to get into a property to show it.
get_listing_details
ChatGPTReturns EVERYTHING about one listing you manage: address, description, beds/baths, rent, amenities, parking, laundry, pet policy, schools, fees, special offer, units, and photo URLs. Use this BEFORE update_listing_details when editing an active or paused listing — read current values here, then call update_listing_details with listing_id and only the fields to change. Pair with get_listing_form_options for exact amenity/menu codes.
get_listing_details
ChatGPTReturns EVERYTHING about one listing you manage: address, description, beds/baths, rent, amenities, parking, laundry, pet policy, schools, fees, special offer, units, and photo URLs. Use this BEFORE update_listing_details when editing an active or paused listing — read current values here, then call update_listing_details with listing_id and only the fields to change. Pair with get_listing_form_options for exact amenity/menu codes.
get_photo_upload_links
ChatGPTReturns a 24-hour one-tap upload link to send to the user's PHONE so they can add photos from their camera roll (no login). Use this when the user has photos on their phone but not as URLs. Pass listing_id for one specific listing (works even if it already has photos); omit listing_id to get links for every active listing that is missing photos. NOT for reordering (use reorder_listing_photos) or adding from web URLs (use add_listing_photos).
get_photo_upload_links
ChatGPTReturns a 24-hour one-tap upload link to send to the user's PHONE so they can add photos from their camera roll (no login). Use this when the user has photos on their phone but not as URLs. Pass listing_id for one specific listing (works even if it already has photos); omit listing_id to get links for every active listing that is missing photos. NOT for reordering (use reorder_listing_photos) or adding from web URLs (use add_listing_photos).
get_today_actions
ChatGPTBattle board: unread leads, hot leads needing response, pending showings, draft listings, auto-reply status. START HERE each session.
get_today_actions
ChatGPTBattle board: unread leads, hot leads needing response, pending showings, draft listings, auto-reply status. START HERE each session.
list_leads
ChatGPTLists renter/buyer leads for your listings (name, contact, message, move-in date, status, which listing they asked about). Most recent first. Same scoping as the dashboard Leads inbox.
list_leads
ChatGPTLists renter/buyer leads for your listings (name, contact, message, move-in date, status, which listing they asked about). Most recent first. Same scoping as the dashboard Leads inbox.
list_listing_photos
ChatGPTReturns every photo on one of your listings as {id, url, position, is_cover} in display order (the first is the cover). Call this to INSPECT photos before arranging them: fetch the urls to judge them visually, then pass the photo ids to reorder_listing_photos or set_cover_photo. Works for resi (rental) and resi_sale (residential for-sale). get_listing_details also returns the same data as photos_detailed.
list_listing_photos
ChatGPTReturns every photo on one of your listings as {id, url, position, is_cover} in display order (the first is the cover). Call this to INSPECT photos before arranging them: fetch the urls to judge them visually, then pass the photo ids to reorder_listing_photos or set_cover_photo. Works for resi (rental) and resi_sale (residential for-sale). get_listing_details also returns the same data as photos_detailed.
list_my_listings
ChatGPTLists the listings in your ConnectLinx account (residential rentals, commercial lease, commercial sale) with price, beds/baths, sqft, status and cover photo. Same data the dashboard Manage Listings panel shows: team members automatically see their broker's listings, and restricted agents only see their assigned ones.
list_my_listings
ChatGPTLists the listings in your ConnectLinx account (residential rentals, commercial lease, commercial sale) with price, beds/baths, sqft, status and cover photo. Same data the dashboard Manage Listings panel shows: team members automatically see their broker's listings, and restricted agents only see their assigned ones.
reorder_listing_photos
ChatGPTSets the display ORDER of photos already on a listing you manage. Pass ordered_photo_ids = the photo ids in the exact order you want them shown; the first id becomes the cover (position 0). Any photos you do not name keep their relative order and follow after. Get the ids from list_listing_photos or get_listing_details (photos_detailed). Works for resi (rental) and resi_sale (residential for-sale); queues the syndication feed. To only promote one photo to the cover, use set_cover_photo instead.
reorder_listing_photos
ChatGPTSets the display ORDER of photos already on a listing you manage. Pass ordered_photo_ids = the photo ids in the exact order you want them shown; the first id becomes the cover (position 0). Any photos you do not name keep their relative order and follow after. Get the ids from list_listing_photos or get_listing_details (photos_detailed). Works for resi (rental) and resi_sale (residential for-sale); queues the syndication feed. To only promote one photo to the cover, use set_cover_photo instead.
run_my_day
ChatGPTSTART HERE. Returns lead stats, hot leads, inbox sections, morning brief, 3+ year stale backlog count, open tasks, and suggested opening line. Optional persona: broker, agent, landlord.
run_my_day
ChatGPTSTART HERE. Returns lead stats, hot leads, inbox sections, morning brief, 3+ year stale backlog count, open tasks, and suggested opening line. Optional persona: broker, agent, landlord.
run_tool
ChatGPTExecutes ANY tool in the ConnectLinx catalog by name — including tools not shown in the default list. Use this after discover_tools to call the tool you found: pass tool_name plus its arguments object (the same arguments that tool documents). Security is identical to calling the tool directly: the exact same scope check and write gate apply, so a read-only connection still cannot run a write tool through here. Unknown tool_name returns the closest matches. The handful of common tools shown in the default list can still be called directly without run_tool.
run_tool
ChatGPTExecutes ANY tool in the ConnectLinx catalog by name — including tools not shown in the default list. Use this after discover_tools to call the tool you found: pass tool_name plus its arguments object (the same arguments that tool documents). Security is identical to calling the tool directly: the exact same scope check and write gate apply, so a read-only connection still cannot run a write tool through here. Unknown tool_name returns the closest matches. The handful of common tools shown in the default list can still be called directly without run_tool.
send_lead_reply
ChatGPTSends a REAL email to the prospect. Confirm with user first. Supports {{name}} and {{listing}} placeholders.
send_lead_reply
ChatGPTSends a REAL email to the prospect. Confirm with user first. Supports {{name}} and {{listing}} placeholders.
set_cover_photo
ChatGPTMakes one photo the COVER (first/position 0) of a listing you manage and shifts the others down, keeping their relative order. Pass the photo_id you want as the hero shot (get ids from list_listing_photos or get_listing_details). Works for resi (rental) and resi_sale (residential for-sale); queues the syndication feed. To set a full custom order, use reorder_listing_photos.
set_cover_photo
ChatGPTMakes one photo the COVER (first/position 0) of a listing you manage and shifts the others down, keeping their relative order. Pass the photo_id you want as the hero shot (get ids from list_listing_photos or get_listing_details). Works for resi (rental) and resi_sale (residential for-sale); queues the syndication feed. To set a full custom order, use reorder_listing_photos.
update_listing_details
ChatGPTPRIMARY tool for editing ANY field on an EXISTING listing (active, paused, or draft). Use this when the user asks to change description, beds, baths, rent, deposit, address, amenities, pets, parking, utilities, schools, vouchers, lease terms, fees, special offer, virtual tour, etc. Do NOT say you lack listing-edit access — you have full write access via this tool. Workflow: (1) get_listing_details to read current values, (2) get_listing_form_options for menu codes, (3) update_listing_details with listing_id plus only changed fields. Same field names as create_draft_listing (rentals) or create_draft_sale_listing (for-sale). Bathrooms: 1.5 baths = bathrooms=1 + half_bathrooms=1 (or bathrooms=1.5 and the server splits). Active listings auto-queue syndication refresh. Status changes use update_listing_status, not this tool.
update_listing_details
ChatGPTPRIMARY tool for editing ANY field on an EXISTING listing (active, paused, or draft). Use this when the user asks to change description, beds, baths, rent, deposit, address, amenities, pets, parking, utilities, schools, vouchers, lease terms, fees, special offer, virtual tour, etc. Do NOT say you lack listing-edit access — you have full write access via this tool. Workflow: (1) get_listing_details to read current values, (2) get_listing_form_options for menu codes, (3) update_listing_details with listing_id plus only changed fields. Same field names as create_draft_listing (rentals) or create_draft_sale_listing (for-sale). Bathrooms: 1.5 baths = bathrooms=1 + half_bathrooms=1 (or bathrooms=1.5 and the server splits). Active listings auto-queue syndication refresh. Status changes use update_listing_status, not this tool.
update_listing_status
ChatGPTReversibly changes the status of a listing you manage. Allowed statuses depend on type — resi (rental): active, pause, leased, draft; resi_sale (residential for-sale, limited-testing accounts only): active, pending, sold, offmarket, draft; lease (commercial lease) and sale (commercial sale): active, pending, sold, leased, offmarket, draft. There is NO delete and every change can be undone by setting another status. MCP cannot publish a draft/new listing live; draft-to-active must be completed manually in the dashboard after human review. Tip: "went under contract/deposit" on a RENTAL is a DEAL stage — use create_or_update_deal and set the listing to "pause"; for sale listings "under contract" = status pending. Mark a closed rental with log_rental_outcome instead when you also want the outcome recorded.
update_listing_status
ChatGPTReversibly changes the status of a listing you manage. Allowed statuses depend on type — resi (rental): active, pause, leased, draft; resi_sale (residential for-sale, limited-testing accounts only): active, pending, sold, offmarket, draft; lease (commercial lease) and sale (commercial sale): active, pending, sold, leased, offmarket, draft. There is NO delete and every change can be undone by setting another status. MCP cannot publish a draft/new listing live; draft-to-active must be completed manually in the dashboard after human review. Tip: "went under contract/deposit" on a RENTAL is a DEAL stage — use create_or_update_deal and set the listing to "pause"; for sale listings "under contract" = status pending. Mark a closed rental with log_rental_outcome instead when you also want the outcome recorded.
Capabilities
Writes






