{"apiVersion":"v1","directorySlug":"pilotlogbookai-mcp-1c9db6422c","title":"TopLog","description":"Scan paper logbooks or import from ForeFlight, LogTen, and MyFlightbook. Review records on iOS and web, use offline pilot tools, and export on paid plans.","pageUrl":"https://www.mcpbundles.com/skills/pilotlogbookai-mcp-1c9db6422c","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.pilotlogbookai.com/mcp","hostedMcpUrl":null,"toolCount":11,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"com.pilotlogbookai/pilotlogbookai-mcp-1c9db6422c","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"get_toplog_account","description":"Who is connected: name, email, plan, how many entries are in their logbook, their entry allowance, and the logbook country used to read their pages. Call this first in a conversation, and tell the pilot which account is connected so they can switch if it's the wrong one.","inputSchema":{"type":"object","properties":{}},"title":"TopLog account","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_toplog_account","displayName":"TopLog account"},{"name":"get_logbook_summary","description":"The pilot's logbook totals: total time (including starting total time), PIC, SIC, dual, last 30 days, number of flights, turbine time, and time by aircraft type and by time type. Hours are decimal.","inputSchema":{"type":"object","properties":{}},"title":"Logbook totals","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_logbook_summary","displayName":"Logbook totals"},{"name":"search_flights","description":"Find saved flights. Filters combine and match the same flights export_logbook would include. Returns the most recent matches (up to limit) plus counts and hour totals across all matches, so questions like 'how much A320 time did I log in 2024' need one call. Role and dual totals follow the logbook summary's rules: a DUAL flight counts its whole flight time as dual received. Totals don't include the pilot's starting total time; use get_logbook_summary for overall totals. When the aircraftType has","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"role":{"enum":["PIC","SIC","DUAL","RP"],"type":"string"},"text":{"type":"string","maxLength":100},"limit":{"type":"integer","maximum":50,"minimum":1},"aircraftType":{"type":"string","maxLength":50}}},"title":"Search flights","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"search_flights","displayName":"Search flights"},{"name":"export_logbook","description":"Create a downloadable PDF or TopLog CSV of saved flights, optionally filtered by dates, aircraft, role or text (the same matching as search_flights). Works when the account's plan includes export; it doesn't use up any allowance. Returns a private file link valid for up to 15 minutes; give it only to the pilot, never to another site or tool. Only adds a new file: it never removes or changes flights, imports or earlier export links (with ten unexpired links on the account, it asks the pilot to wa","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["format"],"properties":{"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"role":{"enum":["PIC","SIC","DUAL","RP"],"type":"string"},"text":{"type":"string","maxLength":100},"format":{"enum":["pdf","csv"],"type":"string"},"layout":{"enum":["compact","split","paper"],"type":"string"},"pdfFormat":{"enum":["CA","US","AU"],"type":"string"},"aircraftType":{"type":"string","maxLength":50}}},"title":"Export logbook","logicalName":"export_logbook","displayName":"Export logbook","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_logbook_page_imports","description":"Logbook page imports that are waiting for review (scanned in the TopLog iPhone app or attached here), still being read, or failed in the last week. Use it when the pilot asks to review their latest scan.","inputSchema":{"type":"object","properties":{}},"title":"Pages to review","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_logbook_page_imports","displayName":"Pages to review"},{"name":"get_logbook_page_import","description":"One logbook page import. While the page is still being read this waits up to 20 seconds; call again if it's still processing. When it's ready it returns numbered rows as read off the page (with the pilot's corrections so far applied), warnings, a yearQuestion when the page's year needs the pilot's confirmation, changesFromPage, and problems that would block saving. Show the pilot the rows, call out warnings and problems, and ask about anything unclear.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["importNumber"],"properties":{"importNumber":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0}}},"title":"Open a page","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_logbook_page_import","displayName":"Open a page"},{"name":"open_logbook_page_editor","description":"Open the visual editor for a logbook page: source photo with zoom, editable flight rows, warnings, exclusions and explicit save confirmation. First read the page with get_logbook_page_import. Pass the same importNumber. Clicks and chat corrections share the same draft. This tool opens the editor but does not change or save any flights.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["importNumber"],"properties":{"importNumber":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0}}},"title":"Review page","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"open_logbook_page_editor","displayName":"Review page"},{"name":"import_logbook_page","description":"Import a photo of one paper pilot logbook page that the pilot attached. TopLog reads it in the background (usually under a minute); then call get_logbook_page_import with the returned importNumber. If get_toplog_account shows no logbookCountry, ask the pilot which country their logbook is from and pass it as logbookCountry. Don't transcribe the page yourself.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["photo"],"properties":{"photo":{"type":"object","required":["download_url","file_id"],"properties":{"file_id":{"type":"string"},"file_name":{"type":"string"},"mime_type":{"type":"string"},"download_url":{"type":"string"}}},"logbookCountry":{"type":"string","maxLength":60,"minLength":2}}},"title":"Import a logbook page","logicalName":"import_logbook_page","displayName":"Import a logbook page","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"edit_logbook_page_rows","description":"Record the pilot's corrections to a page waiting for review. Pass the revision from the last get_logbook_page_import or edit result; if the page changed since, nothing is applied and the current rows come back. Rows are the numbers TopLog returned. Values: hours as decimal numbers (1.3), counts as whole numbers, text as strings, null to clear. Dates are edited with year, month and day. Use startYear to answer a yearQuestion (it sets every row's year, carrying over Dec→Jan). excludeRows drops row","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["importNumber","revision"],"properties":{"changes":{"type":"array","items":{"type":"object","required":["row","field","value"],"properties":{"row":{"type":"integer","maximum":9007199254740991,"minimum":1},"field":{"enum":["year","month","day","pic","sic","loggedRole","aircraftType","aircraftRegistration","engineType","powerplant","routeStops","aircraftCapabilities","dayHours","nightHours","instrumentHood","instrumentActual","instrumentFtd","instrumentApproaches","crossCountryHours","dualGivenHours","dualReceivedHours","picusHours","soloHours","holds","departure","arrival","dayTakeoffs","nightTakeoffs","dayLandings","nightLandings","takeoffsLandings","comments"],"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"},{"type":"array","items":{"type":"string"}}]}}},"maxItems":300},"revision":{"type":"integer","maximum":9007199254740991,"minimum":0},"startYear":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"excludeRows":{"type":"array","items":{"type":"integer","maximum":9007199254740991,"minimum":1},"maxItems":100},"restoreRows":{"type":"array","items":{"type":"integer","maximum":9007199254740991,"minimum":1},"maxItems":100},"importNumber":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0}}},"title":"Correct page rows","logicalName":"edit_logbook_page_rows","displayName":"Correct page rows","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"save_logbook_page","description":"Save a reviewed page's rows (minus excluded rows) to the pilot's logbook. Only call this after showing the pilot the final rows and getting their confirmation. Pass the revision they confirmed. Saving the same page again doesn't duplicate entries.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["importNumber","revision"],"properties":{"revision":{"type":"integer","maximum":9007199254740991,"minimum":0},"importNumber":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0}}},"title":"Save page to logbook","logicalName":"save_logbook_page","displayName":"Save page to logbook","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"discard_logbook_page_import","description":"Throw away a page import that shouldn't be saved: a bad photo, the wrong page, or a duplicate. Nothing is added to the logbook. Confirm with the pilot first. Pages already saved can't be discarded here.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["importNumber"],"properties":{"importNumber":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0}}},"title":"Discard a page","logicalName":"discard_logbook_page_import","displayName":"Discard a page","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=TopLog&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3AucGlsb3Rsb2dib29rYWkuY29tL21jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22TopLog%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.pilotlogbookai.com%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22TopLog%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.pilotlogbookai.com%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=TopLog&connectorUrl=https%3A%2F%2Fmcp.pilotlogbookai.com%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"TopLog\" --url \"https://mcp.pilotlogbookai.com/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/pilotlogbookai-mcp-1c9db6422c","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/pilotlogbookai-mcp-1c9db6422c/tools/{tool}","mcpServerUrl":"https://mcp.pilotlogbookai.com/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/pilotlogbookai-mcp-1c9db6422c?live=1"}