MCP App Store
by KeenEthics

Overview

REPSLog helps real estate professionals log and review the work hours that count toward Real Estate Professional Status (REPS) for U.S. tax purposes. Connect your REPSLog account and you can add a time log in plain language (for example, "log 2 hours showing the Oak Street property today"), then ask for your hours back by property, category, participant, or date range. The connector can create a time log and read your existing data: list your properties, categories, and participants, pull individual logs, and get summaries of total hours. Everything is scoped to your own authenticated REPSLog account. It does not access or share other users' data. Requires a REPSLog account with an active Premium subscription. That subscription is purchased separately in the standalone REPSLog mobile and web apps, not through ChatGPT. Logs created here sync to those apps, so your records stay in one place for IRS documentation.

Tools

attach_file_to_time_log

ChatGPT
Attach a file to an existing time log, by id (from list_time_logs or the id returned by create_time_log). Pass exactly one source: file, a file the user has put in this chat (a photo, screenshot or PDF), or upload_id, a file you uploaded yourself via create_attachment_upload (optionally with file_name). Same limits as the REPSLog app: JPEG, PNG or GIF images, PDF, Word or Excel files, up to 10 MB each (HEIC/WebP photos are not supported). It adds the file; nothing existing is changed or removed. Only attach files the user wants on that entry, after confirming which time log each belongs to.

create_attachment_upload

ChatGPT
Step 1 of attaching a file that YOU (the client) hold, such as a file on disk or in your own storage, to a time log. Returns a private, write-only upload_url valid for 15 minutes. Upload the file bytes with an HTTP PUT to upload_url, sending the returned headers exactly as given (max 10 MB), then call attach_file_to_time_log with the time log id and this upload_id. One upload_id per file; it can be attached once. Do NOT use this for a file the user attached in a ChatGPT chat: pass that file to attach_file_to_time_log directly as file.

create_time_log

ChatGPT
Create a REPS work time log (task) for the authenticated user. Requires a propertyId, a description, and durationMinutes.

create_time_logs

ChatGPT
Create several REPS work time logs in one call (1 to 50 entries). Use it when the user wants to log many entries at once, such as a whole week; for a single entry use create_time_log. Each entry takes the same fields as create_time_log (propertyId, description, durationMinutes, optional categoryId, performedOn, performedBy), with ids from list_properties / list_categories. Each entry is validated and created independently, so partial success is possible: the result lists what was created (with each entry's index and id) and what failed (index, code, message). Indexes are 0-based positions in the entries array you sent. Report the failures to the user and only retry the failed entries, never the whole batch (code 'not-attempted' entries were skipped after an unexpected error and are safe to retry; for 'internal-server-error' check list_time_logs first). An entry identical to one logged moments ago is not duplicated. Show the user the full list of entries and get their approval before calling.

delete_time_log

ChatGPT
Delete a time log by id (from list_time_logs). Removes it from the user's logs immediately. There is no in-app undo, so treat it as permanent and always confirm with the user before calling.

get_breakdown

ChatGPT
Break down a year of logged hours by property, category, and participant (defaults to the current year), read from precomputed stats so totals match the REPSLog app. Optional propertyType (str|ltr) filter. Renders a tabbed card with bars and a category pie.

get_dashboard

ChatGPT
A full REPS dashboard for the year (defaults to the current year): goal ring + totals + breakdowns by property / category / participant, in one card. Returns pre-aggregated stats read from the REPSLog app's own stat tree (no raw entries) so it is accurate and cheap.

get_goal_progress

ChatGPT
Progress toward the user's REPS hour goal for the year. Adapts to their case: LTR combined (500 material-participation incl. you/spouse split, or 750 total REPS hours) and/or STR per-property (100/500). Renders a goal ring.

get_hours_summary

ChatGPT
Aggregate logged hours for a year (defaults to the current year), read from precomputed stats so totals match the REPSLog app exactly. Optionally scope to ONE of property / category / participant, and narrow by propertyType (str|ltr). Returns total/LTR/STR hours + per-property breakdown. For arbitrary date ranges, use list_time_logs.

get_stats

ChatGPT
Flexible, precomputed REPS hour stats — use this for ANY aggregation instead of listing entries. Period: a year (default current), optionally narrowed to one month (1-12), or allTime. groupBy returns a breakdown by property, category (year only), participant, or month (every month of the year); omit for a single total. Optionally scope to one propertyId or participantId, and narrow STR vs LTR with propertyType. Every result is read from precomputed stats (one cheap read). Unsupported combinations (category per-month/all-time, category with a property or participant filter, or any all-time breakdown) are rejected — do NOT fall back to listing time logs for those.

get_time_log_attachments

ChatGPT
Show the attachments (photos, PDFs, documents) of ONE time log, by id (from list_time_logs), in a card with image thumbnails and file links. Use this whenever the user wants to see or open an entry's attachments or pick one to remove; list_time_logs only reports which entries have attachments. The card already displays the images and file links itself, so do NOT embed images, image markdown or the attachment URLs in your reply (ChatGPT blocks them and shows a broken image); just mention file names and link to the time log. The links in the card are fresh and expire after 1 hour, so call this again instead of reusing old links. Each attachment has an id for remove_attachment_from_time_log.

get_user_settings

ChatGPT
Return the whitelisted subset of the user's settings (propertiesType, international properties flag).

list_categories

ChatGPT
List the user's work categories (id + name).

list_participants

ChatGPT
List the user's participants (id + name).

list_properties

ChatGPT
List all of the user's properties (id, nickname, address, isSTR). Takes no arguments; users have only a handful of properties.

list_time_logs

ChatGPT
List INDIVIDUAL time-log entries, newest first, with optional date / property / category / propertyType (str|ltr) filters and cursor pagination. Use ONLY when the user explicitly wants to see, find, edit, or delete specific entries, or for an arbitrary day-level date range or keyword search. NEVER use this to total, count, or break down hours — use get_stats for any aggregation (it is accurate and cheap; summing listed entries is not).

remove_attachment_from_time_log

ChatGPT
Remove one attachment (photo, PDF, Word or Excel file) from a time log. Pass the time log id and the attachment id (not the name or url) exactly as returned in the attachments array of list_time_logs; list again first if you do not have them. Show the user which file it is (its name) before removing. The file is deleted from the entry and from REPSLog storage, the same as removing it in the app, and cannot be undone. Always confirm with the user which attachment to remove before calling.

update_time_log

ChatGPT
Edit an existing time log by id (from list_time_logs). Pass only the fields to change: propertyId, durationMinutes, description, categoryId, performedOn, performedBy. STR/LTR is re-derived from the property.

whoami

ChatGPT
Identify the connected REPSLog account (email, display name, plan/entitlement, and STR/LTR property mode). Use to confirm who you are acting for.

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

App Stats

19

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily