{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_3cd73dvh8n6z","handle":"firmledger","url":"https://wellknown.network/agents/firmledger","links":{"self":"https://wellknown.network/agents/firmledger/record.json","html":"https://wellknown.network/agents/firmledger","markdown":"https://wellknown.network/agents/firmledger/record.md","api":"https://wellknown.network/api/v1/agents/firmledger","status":"https://wellknown.network/api/v1/agents/firmledger/status","claim":"https://wellknown.network/agents/firmledger/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/firmledger/claim.json","badge":"https://wellknown.network/agents/firmledger/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/firmledger/history","tools":"https://wellknown.network/api/v1/agents/firmledger/tools"},"ard":{"identifier":"urn:air:mcp.firmledger.co.ke:server:firmledger","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"FirmLedger","summary":"FirmLedger: search and verify businesses. Free needs no key; Pro adds contacts, news, jobs.","description":"FirmLedger: search and verify businesses. Free needs no key; Pro adds contacts, news, jobs.","publisher":{"name":"ke.co.firmledger","url":null},"homepage":null,"repository":null,"version":"1.0.2","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.firmledger.co.ke/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-28T15:27:09.880669Z","publishedAt":"2026-09-28T15:27:09.880669Z","registryName":"ke.co.firmledger/firmledger"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"data.news","name":"News & Feeds","confidence":1,"provenance":"derived"},{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"analytics.reporting","name":"Reporting & Dashboards","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"derived"},{"slug":"productivity.email","name":"Email","confidence":0.962,"provenance":"derived"},{"slug":"communication.customer-support","name":"Customer Support","confidence":0.583,"provenance":"derived"},{"slug":"content.marketing","name":"Marketing","confidence":0.569,"provenance":"derived"},{"slug":"dev.filesystem","name":"Filesystem","confidence":0.54,"provenance":"derived"}],"categories":["analytics","communication","content","data","dev","productivity","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 4h ago.","lastOkAt":"2026-10-12T00:29:14.895Z","lastProbedAt":"2026-10-12T00:29:14.895Z","statusComputedAt":"2026-10-12T00:30:17.572Z","reliability30d":{"probes":44,"successRate":1,"p50Ms":95,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":44,"ok":44,"authBoundaryOk":0,"serviceOk":44,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-12T00:29:14.895Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":89,"error":null,"detail":{"tools":[{"name":"search_listings","description":"Search approved FirmLedger company records by name or keyword, category, country, city and verified status. Returns a short list (name, category, location, veri"},{"name":"get_listing","description":"The public FirmLedger profile of one company: description, category, location, verification state (tick, how ownership was proved, when it was last checked), co"},{"name":"get_relationships","description":"FirmLedger Pro. The recorded relationship graph of one company: founders, investors, parent companies, subsidiaries, products, services and partners — plus the "},{"name":"get_news","description":"FirmLedger Pro. Recent moderated news headlines about one company with dates, publishers and links — the same accuracy-gated stories shown on the profile's news"},{"name":"list_jobs","description":"FirmLedger Pro. Open roles at approved FirmLedger companies, filtered by company and/or location and keyword: title, company, location, posted date and where to"},{"name":"check_domain","description":"FirmLedger Pro. Given a website domain or URL, report whether an approved FirmLedger record uses it and return that record — useful for \"is this site legit?\" qu"},{"name":"list_categories","description":"Every FirmLedger category with its number of approved listings. Use to pick a valid category for search_listings."},{"name":"list_countries","description":"The countries present in the FirmLedger directory, each with its number of approved listings."},{"name":"prepare_listing_submission","description":"Does NOT create anything. Returns a link to the real FirmLedger submission form with the company name, website and (optional) category, country and city pre-fil"},{"name":"compare_listings","description":"Compare 2 to 4 approved FirmLedger companies side by side: entity type, category, location, founded, team size, website, tagline, date registered, ownership, ti"},{"name":"list_plans","description":"The current FirmLedger Pro offers with price, billing and duration. With an API key it also says whether this account is already on Pro and whether a free trial"},{"name":"list_ad_packages","description":"The current Sponsored-placement advertising packages with price, billing and duration. With an API key it also lists the user's own listings and which of them c"},{"name":"prepare_upgrade","description":"Does NOT charge anything. Returns a personal link to FirmLedger's own checkout for the chosen Pro plan (optionally with a promo code). The user opens it, signs "},{"name":"prepare_advertising","description":"Does NOT charge anything. Checks that the listing belongs to this account and is approved, then returns a personal link to FirmLedger's own checkout for the cho"},{"name":"get_my_listings","description":"The listings this account owns or submitted, with moderation status, tick, scores, Pro perks, sponsorship, jobs and new-lead counts. Use first when the user ref"},{"name":"get_analytics","description":"Audience analytics for the user's own listings — views today/7/30 days/total, unique visitors, profile and website clicks, leads, the 30-day funnel, top visitor"},{"name":"list_leads","description":"The user's FirmLedger Leads inbox: inquiries received on their listings (box \"received\", the default), archived ones (\"archived\"), or inquiries they sent to oth"},{"name":"get_lead","description":"One conversation from the Leads inbox with the inquirer's details and every message, oldest first. Use before reply_to_lead so the reply fits the thread."},{"name":"get_watchlist","description":"The companies the user watches on FirmLedger, newest first."},{"name":"export_watchlist_csv","description":"The user's watchlist as CSV text (name, category, type, location, contact details, tech stack, verified owner, confidence, watched since) — the same file as the"},{"name":"get_notifications","description":"The user's in-app FirmLedger notifications, newest first, with the unread count. Set unread_only for just the unread ones."},{"name":"list_my_tickets","description":"The user's FirmLedger support tickets. Pass a ticket reference to read that ticket's full conversation."},{"name":"get_api_status","description":"The state of the FirmLedger REST API for this account and API key, as /api/v1/me and /api/v1/usage answer it: identity, plan and free-trial status, the key's sc"},{"name":"list_webhooks","description":"The account's webhook destinations with events, category filters, active state and signing-secret prefix — plus recent deliveries (status, HTTP code, attempts, "},{"name":"list_api_keys","description":"The account's API keys with label, prefix, scopes, usage totals and last use — never a raw key. Use it to name a key before revoking or re-scoping it."},{"name":"start_lead","description":"Start a new FirmLedger Leads conversation with another approved, claimed business. The signed-in member email is used automatically, the business email stays pr"},{"name":"reply_to_lead","description":"Send a reply in one of the user's lead conversations, exactly as the Reply box on the website does (the other party is notified). Requires the user's confirmati"},{"name":"set_lead_status","description":"Move a lead in the user's business inbox to new, contacted, qualified, won or lost. Requires the user's confirmation."},{"name":"watchlist_add","description":"Add an approved company to the user's watchlist so they are notified when its record changes. Requires the user's confirmation."},{"name":"watchlist_remove","description":"Remove a company from the user's watchlist. Requires the user's confirmation."},{"name":"create_support_ticket","description":"Open a FirmLedger support ticket for the user. Categories: billing, technical, listing, account, verification, other. Requires the user's confirmation of the ex"},{"name":"manage_job","description":"Manage a job owned by the member: edit its title, type, location, apply link or description, close it, or permanently remove it. Editing a live or closed role r"},{"name":"post_job","description":"Submit a job opening on one of the user's listings (the listing needs active Pro perks; up to 5 open or pending roles). Like the dashboard form, it goes to mode"},{"name":"mark_notifications_read","description":"Mark one notification (notification_id) or all of them (all: true) as read. Requires the user's confirmation."},{"name":"refresh_listing_scores","description":"Recompute the confidence, health and completeness scores of one of the user's listings from its current record — the dashboard's \"Re-align scores\". Requires the"},{"name":"refresh_listing_tech","description":"Scan the website of one of the user's listings and refresh its technology snapshot — the dashboard's \"Refresh tech\". Requires the user's confirmation."},{"name":"refresh_listing_news","description":"Look for new coverage of one of the user's approved listings with the same accuracy rules and moderation as the dashboard's \"Refresh news\" (once a minute per li"},{"name":"request_listing_removal","description":"Send a removal request for a listing the user owns or originally submitted. A moderator reviews it; nothing is removed until they accept. Requires the user's co"},{"name":"prepare_listing_claim","description":"Free. Prepare a link to claim an approved listing using DNS TXT, HTML meta tag or site badge. Creates nothing and never grants ownership. The user signs in, gen"},{"name":"create_webhook","description":"Register a webhook on the user’s account after explicit confirmation. Listing events will be sent to this URL. Requires Pro (including a free trial) and write:a"},{"name":"reply_to_ticket","description":"Send a reply in one of the user's own support tickets — the same thread the dashboard shows, and the same message an agent answers. Closed tickets cannot take r"},{"name":"manage_webhooks","description":"Create, update, pause, resume, rotate the signing secret of, test, retry a delivery for, or delete a webhook destination on the user's account — the same operat"},{"name":"manage_api_keys","description":"Create an API key (the raw key is returned once), revoke a key, or change a key's scopes — the dashboard's Developer API controls. Requires the user's confirmat"},{"name":"update_my_listing","description":"Change fields on a listing the user owns (name, tagline, description, website, email, phone, country, city, region, address, logo_url, founded, size, tags, soci"},{"name":"manage_lead","description":"Archive a conversation out of the business inbox, restore it, or delete it permanently — the dashboard's conversation controls. Requires the user's confirmation"},{"name":"connection_status","description":"Report what this FirmLedger connection can do: Free or Pro access, authentication and active free-trial status, and which tools and fields are available. Use wh"},{"name":"get_connection_status","description":"Report how this assistant is connected to FirmLedger: public (no sign-in), an API key, or the member's account through sign-in (OAuth). Shows Free or Pro, the t"},{"name":"request_authentication","description":"Connect this assistant to the member's own FirmLedger account by sign-in (OAuth), or renew or replace that connection. Call it when the member says \"connect me "},{"name":"revoke_connection","description":"Disconnect this assistant from the member's FirmLedger account. The sign-in is revoked on FirmLedger's side at once, and every token it issued stops working. Ca"}],"toolCount":49,"toolsHash":"c251deaabb27be3738c9a1e5e8e4749c409dfe1b2d279222a68d807987bac186","serverName":"firmledger","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T18:26:24.789Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":93,"error":null,"detail":{"tools":[{"name":"search_listings","description":"Search approved FirmLedger company records by name or keyword, category, country, city and verified status. Returns a short list (name, category, location, veri"},{"name":"get_listing","description":"The public FirmLedger profile of one company: description, category, location, verification state (tick, how ownership was proved, when it was last checked), co"},{"name":"get_relationships","description":"FirmLedger Pro. The recorded relationship graph of one company: founders, investors, parent companies, subsidiaries, products, services and partners — plus the "},{"name":"get_news","description":"FirmLedger Pro. Recent moderated news headlines about one company with dates, publishers and links — the same accuracy-gated stories shown on the profile's news"},{"name":"list_jobs","description":"FirmLedger Pro. Open roles at approved FirmLedger companies, filtered by company and/or location and keyword: title, company, location, posted date and where to"},{"name":"check_domain","description":"FirmLedger Pro. Given a website domain or URL, report whether an approved FirmLedger record uses it and return that record — useful for \"is this site legit?\" qu"},{"name":"list_categories","description":"Every FirmLedger category with its number of approved listings. Use to pick a valid category for search_listings."},{"name":"list_countries","description":"The countries present in the FirmLedger directory, each with its number of approved listings."},{"name":"prepare_listing_submission","description":"Does NOT create anything. Returns a link to the real FirmLedger submission form with the company name, website and (optional) category, country and city pre-fil"},{"name":"compare_listings","description":"Compare 2 to 4 approved FirmLedger companies side by side: entity type, category, location, founded, team size, website, tagline, date registered, ownership, ti"},{"name":"list_plans","description":"The current FirmLedger Pro offers with price, billing and duration. With an API key it also says whether this account is already on Pro and whether a free trial"},{"name":"list_ad_packages","description":"The current Sponsored-placement advertising packages with price, billing and duration. With an API key it also lists the user's own listings and which of them c"},{"name":"prepare_upgrade","description":"Does NOT charge anything. Returns a personal link to FirmLedger's own checkout for the chosen Pro plan (optionally with a promo code). The user opens it, signs "},{"name":"prepare_advertising","description":"Does NOT charge anything. Checks that the listing belongs to this account and is approved, then returns a personal link to FirmLedger's own checkout for the cho"},{"name":"get_my_listings","description":"The listings this account owns or submitted, with moderation status, tick, scores, Pro perks, sponsorship, jobs and new-lead counts. Use first when the user ref"},{"name":"get_analytics","description":"Audience analytics for the user's own listings — views today/7/30 days/total, unique visitors, profile and website clicks, leads, the 30-day funnel, top visitor"},{"name":"list_leads","description":"The user's FirmLedger Leads inbox: inquiries received on their listings (box \"received\", the default), archived ones (\"archived\"), or inquiries they sent to oth"},{"name":"get_lead","description":"One conversation from the Leads inbox with the inquirer's details and every message, oldest first. Use before reply_to_lead so the reply fits the thread."},{"name":"get_watchlist","description":"The companies the user watches on FirmLedger, newest first."},{"name":"export_watchlist_csv","description":"The user's watchlist as CSV text (name, category, type, location, contact details, tech stack, verified owner, confidence, watched since) — the same file as the"},{"name":"get_notifications","description":"The user's in-app FirmLedger notifications, newest first, with the unread count. Set unread_only for just the unread ones."},{"name":"list_my_tickets","description":"The user's FirmLedger support tickets. Pass a ticket reference to read that ticket's full conversation."},{"name":"get_api_status","description":"The state of the FirmLedger REST API for this account and API key, as /api/v1/me and /api/v1/usage answer it: identity, plan and free-trial status, the key's sc"},{"name":"list_webhooks","description":"The account's webhook destinations with events, category filters, active state and signing-secret prefix — plus recent deliveries (status, HTTP code, attempts, "},{"name":"list_api_keys","description":"The account's API keys with label, prefix, scopes, usage totals and last use — never a raw key. Use it to name a key before revoking or re-scoping it."},{"name":"start_lead","description":"Start a new FirmLedger Leads conversation with another approved, claimed business. The signed-in member email is used automatically, the business email stays pr"},{"name":"reply_to_lead","description":"Send a reply in one of the user's lead conversations, exactly as the Reply box on the website does (the other party is notified). Requires the user's confirmati"},{"name":"set_lead_status","description":"Move a lead in the user's business inbox to new, contacted, qualified, won or lost. Requires the user's confirmation."},{"name":"watchlist_add","description":"Add an approved company to the user's watchlist so they are notified when its record changes. Requires the user's confirmation."},{"name":"watchlist_remove","description":"Remove a company from the user's watchlist. Requires the user's confirmation."},{"name":"create_support_ticket","description":"Open a FirmLedger support ticket for the user. Categories: billing, technical, listing, account, verification, other. Requires the user's confirmation of the ex"},{"name":"manage_job","description":"Manage a job owned by the member: edit its title, type, location, apply link or description, close it, or permanently remove it. Editing a live or closed role r"},{"name":"post_job","description":"Submit a job opening on one of the user's listings (the listing needs active Pro perks; up to 5 open or pending roles). Like the dashboard form, it goes to mode"},{"name":"mark_notifications_read","description":"Mark one notification (notification_id) or all of them (all: true) as read. Requires the user's confirmation."},{"name":"refresh_listing_scores","description":"Recompute the confidence, health and completeness scores of one of the user's listings from its current record — the dashboard's \"Re-align scores\". Requires the"},{"name":"refresh_listing_tech","description":"Scan the website of one of the user's listings and refresh its technology snapshot — the dashboard's \"Refresh tech\". Requires the user's confirmation."},{"name":"refresh_listing_news","description":"Look for new coverage of one of the user's approved listings with the same accuracy rules and moderation as the dashboard's \"Refresh news\" (once a minute per li"},{"name":"request_listing_removal","description":"Send a removal request for a listing the user owns or originally submitted. A moderator reviews it; nothing is removed until they accept. Requires the user's co"},{"name":"prepare_listing_claim","description":"Free. Prepare a link to claim an approved listing using DNS TXT, HTML meta tag or site badge. Creates nothing and never grants ownership. The user signs in, gen"},{"name":"create_webhook","description":"Register a webhook on the user’s account after explicit confirmation. Listing events will be sent to this URL. Requires Pro (including a free trial) and write:a"},{"name":"reply_to_ticket","description":"Send a reply in one of the user's own support tickets — the same thread the dashboard shows, and the same message an agent answers. Closed tickets cannot take r"},{"name":"manage_webhooks","description":"Create, update, pause, resume, rotate the signing secret of, test, retry a delivery for, or delete a webhook destination on the user's account — the same operat"},{"name":"manage_api_keys","description":"Create an API key (the raw key is returned once), revoke a key, or change a key's scopes — the dashboard's Developer API controls. Requires the user's confirmat"},{"name":"update_my_listing","description":"Change fields on a listing the user owns (name, tagline, description, website, email, phone, country, city, region, address, logo_url, founded, size, tags, soci"},{"name":"manage_lead","description":"Archive a conversation out of the business inbox, restore it, or delete it permanently — the dashboard's conversation controls. Requires the user's confirmation"},{"name":"connection_status","description":"Report what this FirmLedger connection can do: Free or Pro access, authentication and active free-trial status, and which tools and fields are available. Use wh"},{"name":"get_connection_status","description":"Report how this assistant is connected to FirmLedger: public (no sign-in), an API key, or the member's account through sign-in (OAuth). Shows Free or Pro, the t"},{"name":"request_authentication","description":"Connect this assistant to the member's own FirmLedger account by sign-in (OAuth), or renew or replace that connection. Call it when the member says \"connect me "},{"name":"revoke_connection","description":"Disconnect this assistant from the member's FirmLedger account. The sign-in is revoked on FirmLedger's side at once, and every token it issued stops working. Ca"}],"toolCount":49,"toolsHash":"c251deaabb27be3738c9a1e5e8e4749c409dfe1b2d279222a68d807987bac186","serverName":"firmledger","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T11:22:40.162Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":91,"error":null,"detail":{"tools":[{"name":"search_listings","description":"Search approved FirmLedger company records by name or keyword, category, country, city and verified status. Returns a short list (name, category, location, veri"},{"name":"get_listing","description":"The public FirmLedger profile of one company: description, category, location, verification state (tick, how ownership was proved, when it was last checked), co"},{"name":"get_relationships","description":"FirmLedger Pro. The recorded relationship graph of one company: founders, investors, parent companies, subsidiaries, products, services and partners — plus the "},{"name":"get_news","description":"FirmLedger Pro. Recent moderated news headlines about one company with dates, publishers and links — the same accuracy-gated stories shown on the profile's news"},{"name":"list_jobs","description":"FirmLedger Pro. Open roles at approved FirmLedger companies, filtered by company and/or location and keyword: title, company, location, posted date and where to"},{"name":"check_domain","description":"FirmLedger Pro. Given a website domain or URL, report whether an approved FirmLedger record uses it and return that record — useful for \"is this site legit?\" qu"},{"name":"list_categories","description":"Every FirmLedger category with its number of approved listings. Use to pick a valid category for search_listings."},{"name":"list_countries","description":"The countries present in the FirmLedger directory, each with its number of approved listings."},{"name":"prepare_listing_submission","description":"Does NOT create anything. Returns a link to the real FirmLedger submission form with the company name, website and (optional) category, country and city pre-fil"},{"name":"compare_listings","description":"Compare 2 to 4 approved FirmLedger companies side by side: entity type, category, location, founded, team size, website, tagline, date registered, ownership, ti"},{"name":"list_plans","description":"The current FirmLedger Pro offers with price, billing and duration. With an API key it also says whether this account is already on Pro and whether a free trial"},{"name":"list_ad_packages","description":"The current Sponsored-placement advertising packages with price, billing and duration. With an API key it also lists the user's own listings and which of them c"},{"name":"prepare_upgrade","description":"Does NOT charge anything. Returns a personal link to FirmLedger's own checkout for the chosen Pro plan (optionally with a promo code). The user opens it, signs "},{"name":"prepare_advertising","description":"Does NOT charge anything. Checks that the listing belongs to this account and is approved, then returns a personal link to FirmLedger's own checkout for the cho"},{"name":"get_my_listings","description":"The listings this account owns or submitted, with moderation status, tick, scores, Pro perks, sponsorship, jobs and new-lead counts. Use first when the user ref"},{"name":"get_analytics","description":"Audience analytics for the user's own listings — views today/7/30 days/total, unique visitors, profile and website clicks, leads, the 30-day funnel, top visitor"},{"name":"list_leads","description":"The user's FirmLedger Leads inbox: inquiries received on their listings (box \"received\", the default), archived ones (\"archived\"), or inquiries they sent to oth"},{"name":"get_lead","description":"One conversation from the Leads inbox with the inquirer's details and every message, oldest first. Use before reply_to_lead so the reply fits the thread."},{"name":"get_watchlist","description":"The companies the user watches on FirmLedger, newest first."},{"name":"export_watchlist_csv","description":"The user's watchlist as CSV text (name, category, type, location, contact details, tech stack, verified owner, confidence, watched since) — the same file as the"},{"name":"get_notifications","description":"The user's in-app FirmLedger notifications, newest first, with the unread count. Set unread_only for just the unread ones."},{"name":"list_my_tickets","description":"The user's FirmLedger support tickets. Pass a ticket reference to read that ticket's full conversation."},{"name":"get_api_status","description":"The state of the FirmLedger REST API for this account and API key, as /api/v1/me and /api/v1/usage answer it: identity, plan and free-trial status, the key's sc"},{"name":"list_webhooks","description":"The account's webhook destinations with events, category filters, active state and signing-secret prefix — plus recent deliveries (status, HTTP code, attempts, "},{"name":"list_api_keys","description":"The account's API keys with label, prefix, scopes, usage totals and last use — never a raw key. Use it to name a key before revoking or re-scoping it."},{"name":"start_lead","description":"Start a new FirmLedger Leads conversation with another approved, claimed business. The signed-in member email is used automatically, the business email stays pr"},{"name":"reply_to_lead","description":"Send a reply in one of the user's lead conversations, exactly as the Reply box on the website does (the other party is notified). Requires the user's confirmati"},{"name":"set_lead_status","description":"Move a lead in the user's business inbox to new, contacted, qualified, won or lost. Requires the user's confirmation."},{"name":"watchlist_add","description":"Add an approved company to the user's watchlist so they are notified when its record changes. Requires the user's confirmation."},{"name":"watchlist_remove","description":"Remove a company from the user's watchlist. Requires the user's confirmation."},{"name":"create_support_ticket","description":"Open a FirmLedger support ticket for the user. Categories: billing, technical, listing, account, verification, other. Requires the user's confirmation of the ex"},{"name":"manage_job","description":"Manage a job owned by the member: edit its title, type, location, apply link or description, close it, or permanently remove it. Editing a live or closed role r"},{"name":"post_job","description":"Submit a job opening on one of the user's listings (the listing needs active Pro perks; up to 5 open or pending roles). Like the dashboard form, it goes to mode"},{"name":"mark_notifications_read","description":"Mark one notification (notification_id) or all of them (all: true) as read. Requires the user's confirmation."},{"name":"refresh_listing_scores","description":"Recompute the confidence, health and completeness scores of one of the user's listings from its current record — the dashboard's \"Re-align scores\". Requires the"},{"name":"refresh_listing_tech","description":"Scan the website of one of the user's listings and refresh its technology snapshot — the dashboard's \"Refresh tech\". Requires the user's confirmation."},{"name":"refresh_listing_news","description":"Look for new coverage of one of the user's approved listings with the same accuracy rules and moderation as the dashboard's \"Refresh news\" (once a minute per li"},{"name":"request_listing_removal","description":"Send a removal request for a listing the user owns or originally submitted. A moderator reviews it; nothing is removed until they accept. Requires the user's co"},{"name":"prepare_listing_claim","description":"Free. Prepare a link to claim an approved listing using DNS TXT, HTML meta tag or site badge. Creates nothing and never grants ownership. The user signs in, gen"},{"name":"create_webhook","description":"Register a webhook on the user’s account after explicit confirmation. Listing events will be sent to this URL. Requires Pro (including a free trial) and write:a"},{"name":"reply_to_ticket","description":"Send a reply in one of the user's own support tickets — the same thread the dashboard shows, and the same message an agent answers. Closed tickets cannot take r"},{"name":"manage_webhooks","description":"Create, update, pause, resume, rotate the signing secret of, test, retry a delivery for, or delete a webhook destination on the user's account — the same operat"},{"name":"manage_api_keys","description":"Create an API key (the raw key is returned once), revoke a key, or change a key's scopes — the dashboard's Developer API controls. Requires the user's confirmat"},{"name":"update_my_listing","description":"Change fields on a listing the user owns (name, tagline, description, website, email, phone, country, city, region, address, logo_url, founded, size, tags, soci"},{"name":"manage_lead","description":"Archive a conversation out of the business inbox, restore it, or delete it permanently — the dashboard's conversation controls. Requires the user's confirmation"},{"name":"connection_status","description":"Report what this FirmLedger connection can do: Free or Pro access, authentication and active free-trial status, and which tools and fields are available. Use wh"},{"name":"get_connection_status","description":"Report how this assistant is connected to FirmLedger: public (no sign-in), an API key, or the member's account through sign-in (OAuth). Shows Free or Pro, the t"},{"name":"request_authentication","description":"Connect this assistant to the member's own FirmLedger account by sign-in (OAuth), or renew or replace that connection. Call it when the member says \"connect me "},{"name":"revoke_connection","description":"Disconnect this assistant from the member's FirmLedger account. The sign-in is revoked on FirmLedger's side at once, and every token it issued stops working. Ca"}],"toolCount":49,"toolsHash":"c251deaabb27be3738c9a1e5e8e4749c409dfe1b2d279222a68d807987bac186","serverName":"firmledger","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T04:25:39.014Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":92,"error":null,"detail":{"tools":[{"name":"search_listings","description":"Search approved FirmLedger company records by name or keyword, category, country, city and verified status. Returns a short list (name, category, location, veri"},{"name":"get_listing","description":"The public FirmLedger profile of one company: description, category, location, verification state (tick, how ownership was proved, when it was last checked), co"},{"name":"get_relationships","description":"FirmLedger Pro. The recorded relationship graph of one company: founders, investors, parent companies, subsidiaries, products, services and partners — plus the "},{"name":"get_news","description":"FirmLedger Pro. Recent moderated news headlines about one company with dates, publishers and links — the same accuracy-gated stories shown on the profile's news"},{"name":"list_jobs","description":"FirmLedger Pro. Open roles at approved FirmLedger companies, filtered by company and/or location and keyword: title, company, location, posted date and where to"},{"name":"check_domain","description":"FirmLedger Pro. Given a website domain or URL, report whether an approved FirmLedger record uses it and return that record — useful for \"is this site legit?\" qu"},{"name":"list_categories","description":"Every FirmLedger category with its number of approved listings. Use to pick a valid category for search_listings."},{"name":"list_countries","description":"The countries present in the FirmLedger directory, each with its number of approved listings."},{"name":"prepare_listing_submission","description":"Does NOT create anything. Returns a link to the real FirmLedger submission form with the company name, website and (optional) category, country and city pre-fil"},{"name":"compare_listings","description":"Compare 2 to 4 approved FirmLedger companies side by side: entity type, category, location, founded, team size, website, tagline, date registered, ownership, ti"},{"name":"list_plans","description":"The current FirmLedger Pro offers with price, billing and duration. With an API key it also says whether this account is already on Pro and whether a free trial"},{"name":"list_ad_packages","description":"The current Sponsored-placement advertising packages with price, billing and duration. With an API key it also lists the user's own listings and which of them c"},{"name":"prepare_upgrade","description":"Does NOT charge anything. Returns a personal link to FirmLedger's own checkout for the chosen Pro plan (optionally with a promo code). The user opens it, signs "},{"name":"prepare_advertising","description":"Does NOT charge anything. Checks that the listing belongs to this account and is approved, then returns a personal link to FirmLedger's own checkout for the cho"},{"name":"get_my_listings","description":"The listings this account owns or submitted, with moderation status, tick, scores, Pro perks, sponsorship, jobs and new-lead counts. Use first when the user ref"},{"name":"get_analytics","description":"Audience analytics for the user's own listings — views today/7/30 days/total, unique visitors, profile and website clicks, leads, the 30-day funnel, top visitor"},{"name":"list_leads","description":"The user's FirmLedger Leads inbox: inquiries received on their listings (box \"received\", the default), archived ones (\"archived\"), or inquiries they sent to oth"},{"name":"get_lead","description":"One conversation from the Leads inbox with the inquirer's details and every message, oldest first. Use before reply_to_lead so the reply fits the thread."},{"name":"get_watchlist","description":"The companies the user watches on FirmLedger, newest first."},{"name":"export_watchlist_csv","description":"The user's watchlist as CSV text (name, category, type, location, contact details, tech stack, verified owner, confidence, watched since) — the same file as the"},{"name":"get_notifications","description":"The user's in-app FirmLedger notifications, newest first, with the unread count. Set unread_only for just the unread ones."},{"name":"list_my_tickets","description":"The user's FirmLedger support tickets. Pass a ticket reference to read that ticket's full conversation."},{"name":"get_api_status","description":"The state of the FirmLedger REST API for this account and API key, as /api/v1/me and /api/v1/usage answer it: identity, plan and free-trial status, the key's sc"},{"name":"list_webhooks","description":"The account's webhook destinations with events, category filters, active state and signing-secret prefix — plus recent deliveries (status, HTTP code, attempts, "},{"name":"list_api_keys","description":"The account's API keys with label, prefix, scopes, usage totals and last use — never a raw key. Use it to name a key before revoking or re-scoping it."},{"name":"start_lead","description":"Start a new FirmLedger Leads conversation with another approved, claimed business. The signed-in member email is used automatically, the business email stays pr"},{"name":"reply_to_lead","description":"Send a reply in one of the user's lead conversations, exactly as the Reply box on the website does (the other party is notified). Requires the user's confirmati"},{"name":"set_lead_status","description":"Move a lead in the user's business inbox to new, contacted, qualified, won or lost. Requires the user's confirmation."},{"name":"watchlist_add","description":"Add an approved company to the user's watchlist so they are notified when its record changes. Requires the user's confirmation."},{"name":"watchlist_remove","description":"Remove a company from the user's watchlist. Requires the user's confirmation."},{"name":"create_support_ticket","description":"Open a FirmLedger support ticket for the user. Categories: billing, technical, listing, account, verification, other. Requires the user's confirmation of the ex"},{"name":"manage_job","description":"Manage a job owned by the member: edit its title, type, location, apply link or description, close it, or permanently remove it. Editing a live or closed role r"},{"name":"post_job","description":"Submit a job opening on one of the user's listings (the listing needs active Pro perks; up to 5 open or pending roles). Like the dashboard form, it goes to mode"},{"name":"mark_notifications_read","description":"Mark one notification (notification_id) or all of them (all: true) as read. Requires the user's confirmation."},{"name":"refresh_listing_scores","description":"Recompute the confidence, health and completeness scores of one of the user's listings from its current record — the dashboard's \"Re-align scores\". Requires the"},{"name":"refresh_listing_tech","description":"Scan the website of one of the user's listings and refresh its technology snapshot — the dashboard's \"Refresh tech\". Requires the user's confirmation."},{"name":"refresh_listing_news","description":"Look for new coverage of one of the user's approved listings with the same accuracy rules and moderation as the dashboard's \"Refresh news\" (once a minute per li"},{"name":"request_listing_removal","description":"Send a removal request for a listing the user owns or originally submitted. A moderator reviews it; nothing is removed until they accept. Requires the user's co"},{"name":"prepare_listing_claim","description":"Free. Prepare a link to claim an approved listing using DNS TXT, HTML meta tag or site badge. Creates nothing and never grants ownership. The user signs in, gen"},{"name":"create_webhook","description":"Register a webhook on the user’s account after explicit confirmation. Listing events will be sent to this URL. Requires Pro (including a free trial) and write:a"},{"name":"reply_to_ticket","description":"Send a reply in one of the user's own support tickets — the same thread the dashboard shows, and the same message an agent answers. Closed tickets cannot take r"},{"name":"manage_webhooks","description":"Create, update, pause, resume, rotate the signing secret of, test, retry a delivery for, or delete a webhook destination on the user's account — the same operat"},{"name":"manage_api_keys","description":"Create an API key (the raw key is returned once), revoke a key, or change a key's scopes — the dashboard's Developer API controls. Requires the user's confirmat"},{"name":"update_my_listing","description":"Change fields on a listing the user owns (name, tagline, description, website, email, phone, country, city, region, address, logo_url, founded, size, tags, soci"},{"name":"manage_lead","description":"Archive a conversation out of the business inbox, restore it, or delete it permanently — the dashboard's conversation controls. Requires the user's confirmation"},{"name":"connection_status","description":"Report what this FirmLedger connection can do: Free or Pro access, authentication and active free-trial status, and which tools and fields are available. Use wh"},{"name":"get_connection_status","description":"Report how this assistant is connected to FirmLedger: public (no sign-in), an API key, or the member's account through sign-in (OAuth). Shows Free or Pro, the t"},{"name":"request_authentication","description":"Connect this assistant to the member's own FirmLedger account by sign-in (OAuth), or renew or replace that connection. Call it when the member says \"connect me "},{"name":"revoke_connection","description":"Disconnect this assistant from the member's FirmLedger account. The sign-in is revoked on FirmLedger's side at once, and every token it issued stops working. Ca"}],"toolCount":49,"toolsHash":"c251deaabb27be3738c9a1e5e8e4749c409dfe1b2d279222a68d807987bac186","serverName":"firmledger","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T22:20:12.069Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":94,"error":null,"detail":{"tools":[{"name":"search_listings","description":"Search approved FirmLedger company records by name or keyword, category, country, city and verified status. Returns a short list (name, category, location, veri"},{"name":"get_listing","description":"The public FirmLedger profile of one company: description, category, location, verification state (tick, how ownership was proved, when it was last checked), co"},{"name":"get_relationships","description":"FirmLedger Pro. The recorded relationship graph of one company: founders, investors, parent companies, subsidiaries, products, services and partners — plus the "},{"name":"get_news","description":"FirmLedger Pro. Recent moderated news headlines about one company with dates, publishers and links — the same accuracy-gated stories shown on the profile's news"},{"name":"list_jobs","description":"FirmLedger Pro. Open roles at approved FirmLedger companies, filtered by company and/or location and keyword: title, company, location, posted date and where to"},{"name":"check_domain","description":"FirmLedger Pro. Given a website domain or URL, report whether an approved FirmLedger record uses it and return that record — useful for \"is this site legit?\" qu"},{"name":"list_categories","description":"Every FirmLedger category with its number of approved listings. Use to pick a valid category for search_listings."},{"name":"list_countries","description":"The countries present in the FirmLedger directory, each with its number of approved listings."},{"name":"prepare_listing_submission","description":"Does NOT create anything. Returns a link to the real FirmLedger submission form with the company name, website and (optional) category, country and city pre-fil"},{"name":"compare_listings","description":"Compare 2 to 4 approved FirmLedger companies side by side: entity type, category, location, founded, team size, website, tagline, date registered, ownership, ti"},{"name":"list_plans","description":"The current FirmLedger Pro offers with price, billing and duration. With an API key it also says whether this account is already on Pro and whether a free trial"},{"name":"list_ad_packages","description":"The current Sponsored-placement advertising packages with price, billing and duration. With an API key it also lists the user's own listings and which of them c"},{"name":"prepare_upgrade","description":"Does NOT charge anything. Returns a personal link to FirmLedger's own checkout for the chosen Pro plan (optionally with a promo code). The user opens it, signs "},{"name":"prepare_advertising","description":"Does NOT charge anything. Checks that the listing belongs to this account and is approved, then returns a personal link to FirmLedger's own checkout for the cho"},{"name":"get_my_listings","description":"The listings this account owns or submitted, with moderation status, tick, scores, Pro perks, sponsorship, jobs and new-lead counts. Use first when the user ref"},{"name":"get_analytics","description":"Audience analytics for the user's own listings — views today/7/30 days/total, unique visitors, profile and website clicks, leads, the 30-day funnel, top visitor"},{"name":"list_leads","description":"The user's FirmLedger Leads inbox: inquiries received on their listings (box \"received\", the default), archived ones (\"archived\"), or inquiries they sent to oth"},{"name":"get_lead","description":"One conversation from the Leads inbox with the inquirer's details and every message, oldest first. Use before reply_to_lead so the reply fits the thread."},{"name":"get_watchlist","description":"The companies the user watches on FirmLedger, newest first."},{"name":"export_watchlist_csv","description":"The user's watchlist as CSV text (name, category, type, location, contact details, tech stack, verified owner, confidence, watched since) — the same file as the"},{"name":"get_notifications","description":"The user's in-app FirmLedger notifications, newest first, with the unread count. Set unread_only for just the unread ones."},{"name":"list_my_tickets","description":"The user's FirmLedger support tickets. Pass a ticket reference to read that ticket's full conversation."},{"name":"get_api_status","description":"The state of the FirmLedger REST API for this account and API key, as /api/v1/me and /api/v1/usage answer it: identity, plan and free-trial status, the key's sc"},{"name":"list_webhooks","description":"The account's webhook destinations with events, category filters, active state and signing-secret prefix — plus recent deliveries (status, HTTP code, attempts, "},{"name":"list_api_keys","description":"The account's API keys with label, prefix, scopes, usage totals and last use — never a raw key. Use it to name a key before revoking or re-scoping it."},{"name":"start_lead","description":"Start a new FirmLedger Leads conversation with another approved, claimed business. The signed-in member email is used automatically, the business email stays pr"},{"name":"reply_to_lead","description":"Send a reply in one of the user's lead conversations, exactly as the Reply box on the website does (the other party is notified). Requires the user's confirmati"},{"name":"set_lead_status","description":"Move a lead in the user's business inbox to new, contacted, qualified, won or lost. Requires the user's confirmation."},{"name":"watchlist_add","description":"Add an approved company to the user's watchlist so they are notified when its record changes. Requires the user's confirmation."},{"name":"watchlist_remove","description":"Remove a company from the user's watchlist. Requires the user's confirmation."},{"name":"create_support_ticket","description":"Open a FirmLedger support ticket for the user. Categories: billing, technical, listing, account, verification, other. Requires the user's confirmation of the ex"},{"name":"manage_job","description":"Manage a job owned by the member: edit its title, type, location, apply link or description, close it, or permanently remove it. Editing a live or closed role r"},{"name":"post_job","description":"Submit a job opening on one of the user's listings (the listing needs active Pro perks; up to 5 open or pending roles). Like the dashboard form, it goes to mode"},{"name":"mark_notifications_read","description":"Mark one notification (notification_id) or all of them (all: true) as read. Requires the user's confirmation."},{"name":"refresh_listing_scores","description":"Recompute the confidence, health and completeness scores of one of the user's listings from its current record — the dashboard's \"Re-align scores\". Requires the"},{"name":"refresh_listing_tech","description":"Scan the website of one of the user's listings and refresh its technology snapshot — the dashboard's \"Refresh tech\". Requires the user's confirmation."},{"name":"refresh_listing_news","description":"Look for new coverage of one of the user's approved listings with the same accuracy rules and moderation as the dashboard's \"Refresh news\" (once a minute per li"},{"name":"request_listing_removal","description":"Send a removal request for a listing the user owns or originally submitted. A moderator reviews it; nothing is removed until they accept. Requires the user's co"},{"name":"prepare_listing_claim","description":"Free. Prepare a link to claim an approved listing using DNS TXT, HTML meta tag or site badge. Creates nothing and never grants ownership. The user signs in, gen"},{"name":"create_webhook","description":"Register a webhook on the user’s account after explicit confirmation. Listing events will be sent to this URL. Requires Pro (including a free trial) and write:a"},{"name":"reply_to_ticket","description":"Send a reply in one of the user's own support tickets — the same thread the dashboard shows, and the same message an agent answers. Closed tickets cannot take r"},{"name":"manage_webhooks","description":"Create, update, pause, resume, rotate the signing secret of, test, retry a delivery for, or delete a webhook destination on the user's account — the same operat"},{"name":"manage_api_keys","description":"Create an API key (the raw key is returned once), revoke a key, or change a key's scopes — the dashboard's Developer API controls. Requires the user's confirmat"},{"name":"update_my_listing","description":"Change fields on a listing the user owns (name, tagline, description, website, email, phone, country, city, region, address, logo_url, founded, size, tags, soci"},{"name":"manage_lead","description":"Archive a conversation out of the business inbox, restore it, or delete it permanently — the dashboard's conversation controls. Requires the user's confirmation"},{"name":"connection_status","description":"Report what this FirmLedger connection can do: Free or Pro access, authentication and active free-trial status, and which tools and fields are available. Use wh"},{"name":"get_connection_status","description":"Report how this assistant is connected to FirmLedger: public (no sign-in), an API key, or the member's account through sign-in (OAuth). Shows Free or Pro, the t"},{"name":"request_authentication","description":"Connect this assistant to the member's own FirmLedger account by sign-in (OAuth), or renew or replace that connection. Call it when the member says \"connect me "},{"name":"revoke_connection","description":"Disconnect this assistant from the member's FirmLedger account. The sign-in is revoked on FirmLedger's side at once, and every token it issued stops working. Ca"}],"toolCount":49,"toolsHash":"c251deaabb27be3738c9a1e5e8e4749c409dfe1b2d279222a68d807987bac186","serverName":"firmledger","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T15:32:13.851Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":90,"error":null,"detail":{"tools":[{"name":"search_listings","description":"Search approved FirmLedger company records by name or keyword, category, country, city and verified status. Returns a short list (name, category, location, veri"},{"name":"get_listing","description":"The public FirmLedger profile of one company: description, category, location, verification state (tick, how ownership was proved, when it was last checked), co"},{"name":"get_relationships","description":"FirmLedger Pro. The recorded relationship graph of one company: founders, investors, parent companies, subsidiaries, products, services and partners — plus the "},{"name":"get_news","description":"FirmLedger Pro. Recent moderated news headlines about one company with dates, publishers and links — the same accuracy-gated stories shown on the profile's news"},{"name":"list_jobs","description":"FirmLedger Pro. Open roles at approved FirmLedger companies, filtered by company and/or location and keyword: title, company, location, posted date and where to"},{"name":"check_domain","description":"FirmLedger Pro. Given a website domain or URL, report whether an approved FirmLedger record uses it and return that record — useful for \"is this site legit?\" qu"},{"name":"list_categories","description":"Every FirmLedger category with its number of approved listings. Use to pick a valid category for search_listings."},{"name":"list_countries","description":"The countries present in the FirmLedger directory, each with its number of approved listings."},{"name":"prepare_listing_submission","description":"Does NOT create anything. Returns a link to the real FirmLedger submission form with the company name, website and (optional) category, country and city pre-fil"},{"name":"compare_listings","description":"Compare 2 to 4 approved FirmLedger companies side by side: entity type, category, location, founded, team size, website, tagline, date registered, ownership, ti"},{"name":"list_plans","description":"The current FirmLedger Pro offers with price, billing and duration. With an API key it also says whether this account is already on Pro and whether a free trial"},{"name":"list_ad_packages","description":"The current Sponsored-placement advertising packages with price, billing and duration. With an API key it also lists the user's own listings and which of them c"},{"name":"prepare_upgrade","description":"Does NOT charge anything. Returns a personal link to FirmLedger's own checkout for the chosen Pro plan (optionally with a promo code). The user opens it, signs "},{"name":"prepare_advertising","description":"Does NOT charge anything. Checks that the listing belongs to this account and is approved, then returns a personal link to FirmLedger's own checkout for the cho"},{"name":"get_my_listings","description":"The listings this account owns or submitted, with moderation status, tick, scores, Pro perks, sponsorship, jobs and new-lead counts. Use first when the user ref"},{"name":"get_analytics","description":"Audience analytics for the user's own listings — views today/7/30 days/total, unique visitors, profile and website clicks, leads, the 30-day funnel, top visitor"},{"name":"list_leads","description":"The user's FirmLedger Leads inbox: inquiries received on their listings (box \"received\", the default), archived ones (\"archived\"), or inquiries they sent to oth"},{"name":"get_lead","description":"One conversation from the Leads inbox with the inquirer's details and every message, oldest first. Use before reply_to_lead so the reply fits the thread."},{"name":"get_watchlist","description":"The companies the user watches on FirmLedger, newest first."},{"name":"export_watchlist_csv","description":"The user's watchlist as CSV text (name, category, type, location, contact details, tech stack, verified owner, confidence, watched since) — the same file as the"},{"name":"get_notifications","description":"The user's in-app FirmLedger notifications, newest first, with the unread count. Set unread_only for just the unread ones."},{"name":"list_my_tickets","description":"The user's FirmLedger support tickets. Pass a ticket reference to read that ticket's full conversation."},{"name":"get_api_status","description":"The state of the FirmLedger REST API for this account and API key, as /api/v1/me and /api/v1/usage answer it: identity, plan and free-trial status, the key's sc"},{"name":"list_webhooks","description":"The account's webhook destinations with events, category filters, active state and signing-secret prefix — plus recent deliveries (status, HTTP code, attempts, "},{"name":"list_api_keys","description":"The account's API keys with label, prefix, scopes, usage totals and last use — never a raw key. Use it to name a key before revoking or re-scoping it."},{"name":"start_lead","description":"Start a new FirmLedger Leads conversation with another approved, claimed business. The signed-in member email is used automatically, the business email stays pr"},{"name":"reply_to_lead","description":"Send a reply in one of the user's lead conversations, exactly as the Reply box on the website does (the other party is notified). Requires the user's confirmati"},{"name":"set_lead_status","description":"Move a lead in the user's business inbox to new, contacted, qualified, won or lost. Requires the user's confirmation."},{"name":"watchlist_add","description":"Add an approved company to the user's watchlist so they are notified when its record changes. Requires the user's confirmation."},{"name":"watchlist_remove","description":"Remove a company from the user's watchlist. Requires the user's confirmation."},{"name":"create_support_ticket","description":"Open a FirmLedger support ticket for the user. Categories: billing, technical, listing, account, verification, other. Requires the user's confirmation of the ex"},{"name":"manage_job","description":"Manage a job owned by the member: edit its title, type, location, apply link or description, close it, or permanently remove it. Editing a live or closed role r"},{"name":"post_job","description":"Submit a job opening on one of the user's listings (the listing needs active Pro perks; up to 5 open or pending roles). Like the dashboard form, it goes to mode"},{"name":"mark_notifications_read","description":"Mark one notification (notification_id) or all of them (all: true) as read. Requires the user's confirmation."},{"name":"refresh_listing_scores","description":"Recompute the confidence, health and completeness scores of one of the user's listings from its current record — the dashboard's \"Re-align scores\". Requires the"},{"name":"refresh_listing_tech","description":"Scan the website of one of the user's listings and refresh its technology snapshot — the dashboard's \"Refresh tech\". Requires the user's confirmation."},{"name":"refresh_listing_news","description":"Look for new coverage of one of the user's approved listings with the same accuracy rules and moderation as the dashboard's \"Refresh news\" (once a minute per li"},{"name":"request_listing_removal","description":"Send a removal request for a listing the user owns or originally submitted. A moderator reviews it; nothing is removed until they accept. Requires the user's co"},{"name":"prepare_listing_claim","description":"Free. Prepare a link to claim an approved listing using DNS TXT, HTML meta tag or site badge. Creates nothing and never grants ownership. The user signs in, gen"},{"name":"create_webhook","description":"Register a webhook on the user’s account after explicit confirmation. Listing events will be sent to this URL. Requires Pro (including a free trial) and write:a"},{"name":"reply_to_ticket","description":"Send a reply in one of the user's own support tickets — the same thread the dashboard shows, and the same message an agent answers. Closed tickets cannot take r"},{"name":"manage_webhooks","description":"Create, update, pause, resume, rotate the signing secret of, test, retry a delivery for, or delete a webhook destination on the user's account — the same operat"},{"name":"manage_api_keys","description":"Create an API key (the raw key is returned once), revoke a key, or change a key's scopes — the dashboard's Developer API controls. Requires the user's confirmat"},{"name":"update_my_listing","description":"Change fields on a listing the user owns (name, tagline, description, website, email, phone, country, city, region, address, logo_url, founded, size, tags, soci"},{"name":"manage_lead","description":"Archive a conversation out of the business inbox, restore it, or delete it permanently — the dashboard's conversation controls. Requires the user's confirmation"},{"name":"connection_status","description":"Report what this FirmLedger connection can do: Free or Pro access, authentication and active free-trial status, and which tools and fields are available. Use wh"},{"name":"get_connection_status","description":"Report how this assistant is connected to FirmLedger: public (no sign-in), an API key, or the member's account through sign-in (OAuth). Shows Free or Pro, the t"},{"name":"request_authentication","description":"Connect this assistant to the member's own FirmLedger account by sign-in (OAuth), or renew or replace that connection. Call it when the member says \"connect me "},{"name":"revoke_connection","description":"Disconnect this assistant from the member's FirmLedger account. The sign-in is revoked on FirmLedger's side at once, and every token it issued stops working. Ca"}],"toolCount":49,"toolsHash":"c251deaabb27be3738c9a1e5e8e4749c409dfe1b2d279222a68d807987bac186","serverName":"firmledger","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T09:25:21.750Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":99,"error":null,"detail":{"tools":[{"name":"search_listings","description":"Search approved FirmLedger company records by name or keyword, category, country, city and verified status. Returns a short list (name, category, location, veri"},{"name":"get_listing","description":"The public FirmLedger profile of one company: description, category, location, verification state (tick, how ownership was proved, when it was last checked), co"},{"name":"get_relationships","description":"FirmLedger Pro. The recorded relationship graph of one company: founders, investors, parent companies, subsidiaries, products, services and partners — plus the "},{"name":"get_news","description":"FirmLedger Pro. Recent moderated news headlines about one company with dates, publishers and links — the same accuracy-gated stories shown on the profile's news"},{"name":"list_jobs","description":"FirmLedger Pro. Open roles at approved FirmLedger companies, filtered by company and/or location and keyword: title, company, location, posted date and where to"},{"name":"check_domain","description":"FirmLedger Pro. Given a website domain or URL, report whether an approved FirmLedger record uses it and return that record — useful for \"is this site legit?\" qu"},{"name":"list_categories","description":"Every FirmLedger category with its number of approved listings. Use to pick a valid category for search_listings."},{"name":"list_countries","description":"The countries present in the FirmLedger directory, each with its number of approved listings."},{"name":"prepare_listing_submission","description":"Does NOT create anything. Returns a link to the real FirmLedger submission form with the company name, website and (optional) category, country and city pre-fil"},{"name":"compare_listings","description":"Compare 2 to 4 approved FirmLedger companies side by side: entity type, category, location, founded, team size, website, tagline, date registered, ownership, ti"},{"name":"list_plans","description":"The current FirmLedger Pro offers with price, billing and duration. With an API key it also says whether this account is already on Pro and whether a free trial"},{"name":"list_ad_packages","description":"The current Sponsored-placement advertising packages with price, billing and duration. With an API key it also lists the user's own listings and which of them c"},{"name":"prepare_upgrade","description":"Does NOT charge anything. Returns a personal link to FirmLedger's own checkout for the chosen Pro plan (optionally with a promo code). The user opens it, signs "},{"name":"prepare_advertising","description":"Does NOT charge anything. Checks that the listing belongs to this account and is approved, then returns a personal link to FirmLedger's own checkout for the cho"},{"name":"get_my_listings","description":"The listings this account owns or submitted, with moderation status, tick, scores, Pro perks, sponsorship, jobs and new-lead counts. Use first when the user ref"},{"name":"get_analytics","description":"Audience analytics for the user's own listings — views today/7/30 days/total, unique visitors, profile and website clicks, leads, the 30-day funnel, top visitor"},{"name":"list_leads","description":"The user's FirmLedger Leads inbox: inquiries received on their listings (box \"received\", the default), archived ones (\"archived\"), or inquiries they sent to oth"},{"name":"get_lead","description":"One conversation from the Leads inbox with the inquirer's details and every message, oldest first. Use before reply_to_lead so the reply fits the thread."},{"name":"get_watchlist","description":"The companies the user watches on FirmLedger, newest first."},{"name":"export_watchlist_csv","description":"The user's watchlist as CSV text (name, category, type, location, contact details, tech stack, verified owner, confidence, watched since) — the same file as the"},{"name":"get_notifications","description":"The user's in-app FirmLedger notifications, newest first, with the unread count. Set unread_only for just the unread ones."},{"name":"list_my_tickets","description":"The user's FirmLedger support tickets. Pass a ticket reference to read that ticket's full conversation."},{"name":"get_api_status","description":"The state of the FirmLedger REST API for this account and API key, as /api/v1/me and /api/v1/usage answer it: identity, plan and free-trial status, the key's sc"},{"name":"list_webhooks","description":"The account's webhook destinations with events, category filters, active state and signing-secret prefix — plus recent deliveries (status, HTTP code, attempts, "},{"name":"list_api_keys","description":"The account's API keys with label, prefix, scopes, usage totals and last use — never a raw key. Use it to name a key before revoking or re-scoping it."},{"name":"start_lead","description":"Start a new FirmLedger Leads conversation with another approved, claimed business. The signed-in member email is used automatically, the business email stays pr"},{"name":"reply_to_lead","description":"Send a reply in one of the user's lead conversations, exactly as the Reply box on the website does (the other party is notified). Requires the user's confirmati"},{"name":"set_lead_status","description":"Move a lead in the user's business inbox to new, contacted, qualified, won or lost. Requires the user's confirmation."},{"name":"watchlist_add","description":"Add an approved company to the user's watchlist so they are notified when its record changes. Requires the user's confirmation."},{"name":"watchlist_remove","description":"Remove a company from the user's watchlist. Requires the user's confirmation."},{"name":"create_support_ticket","description":"Open a FirmLedger support ticket for the user. Categories: billing, technical, listing, account, verification, other. Requires the user's confirmation of the ex"},{"name":"manage_job","description":"Manage a job owned by the member: edit its title, type, location, apply link or description, close it, or permanently remove it. Editing a live or closed role r"},{"name":"post_job","description":"Submit a job opening on one of the user's listings (the listing needs active Pro perks; up to 5 open or pending roles). Like the dashboard form, it goes to mode"},{"name":"mark_notifications_read","description":"Mark one notification (notification_id) or all of them (all: true) as read. Requires the user's confirmation."},{"name":"refresh_listing_scores","description":"Recompute the confidence, health and completeness scores of one of the user's listings from its current record — the dashboard's \"Re-align scores\". Requires the"},{"name":"refresh_listing_tech","description":"Scan the website of one of the user's listings and refresh its technology snapshot — the dashboard's \"Refresh tech\". Requires the user's confirmation."},{"name":"refresh_listing_news","description":"Look for new coverage of one of the user's approved listings with the same accuracy rules and moderation as the dashboard's \"Refresh news\" (once a minute per li"},{"name":"request_listing_removal","description":"Send a removal request for a listing the user owns or originally submitted. A moderator reviews it; nothing is removed until they accept. Requires the user's co"},{"name":"prepare_listing_claim","description":"Free. Prepare a link to claim an approved listing using DNS TXT, HTML meta tag or site badge. Creates nothing and never grants ownership. The user signs in, gen"},{"name":"create_webhook","description":"Register a webhook on the user’s account after explicit confirmation. Listing events will be sent to this URL. Requires Pro (including a free trial) and write:a"},{"name":"reply_to_ticket","description":"Send a reply in one of the user's own support tickets — the same thread the dashboard shows, and the same message an agent answers. Closed tickets cannot take r"},{"name":"manage_webhooks","description":"Create, update, pause, resume, rotate the signing secret of, test, retry a delivery for, or delete a webhook destination on the user's account — the same operat"},{"name":"manage_api_keys","description":"Create an API key (the raw key is returned once), revoke a key, or change a key's scopes — the dashboard's Developer API controls. Requires the user's confirmat"},{"name":"update_my_listing","description":"Change fields on a listing the user owns (name, tagline, description, website, email, phone, country, city, region, address, logo_url, founded, size, tags, soci"},{"name":"manage_lead","description":"Archive a conversation out of the business inbox, restore it, or delete it permanently — the dashboard's conversation controls. Requires the user's confirmation"},{"name":"connection_status","description":"Report what this FirmLedger connection can do: Free or Pro access, authentication and active free-trial status, and which tools and fields are available. Use wh"},{"name":"get_connection_status","description":"Report how this assistant is connected to FirmLedger: public (no sign-in), an API key, or the member's account through sign-in (OAuth). Shows Free or Pro, the t"},{"name":"request_authentication","description":"Connect this assistant to the member's own FirmLedger account by sign-in (OAuth), or renew or replace that connection. Call it when the member says \"connect me "},{"name":"revoke_connection","description":"Disconnect this assistant from the member's FirmLedger account. The sign-in is revoked on FirmLedger's side at once, and every token it issued stops working. Ca"}],"toolCount":49,"toolsHash":"c251deaabb27be3738c9a1e5e8e4749c409dfe1b2d279222a68d807987bac186","serverName":"firmledger","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T03:25:07.390Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":92,"error":null,"detail":{"tools":[{"name":"search_listings","description":"Search approved FirmLedger company records by name or keyword, category, country, city and verified status. Returns a short list (name, category, location, veri"},{"name":"get_listing","description":"The public FirmLedger profile of one company: description, category, location, verification state (tick, how ownership was proved, when it was last checked), co"},{"name":"get_relationships","description":"FirmLedger Pro. The recorded relationship graph of one company: founders, investors, parent companies, subsidiaries, products, services and partners — plus the "},{"name":"get_news","description":"FirmLedger Pro. Recent moderated news headlines about one company with dates, publishers and links — the same accuracy-gated stories shown on the profile's news"},{"name":"list_jobs","description":"FirmLedger Pro. Open roles at approved FirmLedger companies, filtered by company and/or location and keyword: title, company, location, posted date and where to"},{"name":"check_domain","description":"FirmLedger Pro. Given a website domain or URL, report whether an approved FirmLedger record uses it and return that record — useful for \"is this site legit?\" qu"},{"name":"list_categories","description":"Every FirmLedger category with its number of approved listings. Use to pick a valid category for search_listings."},{"name":"list_countries","description":"The countries present in the FirmLedger directory, each with its number of approved listings."},{"name":"prepare_listing_submission","description":"Does NOT create anything. Returns a link to the real FirmLedger submission form with the company name, website and (optional) category, country and city pre-fil"},{"name":"compare_listings","description":"Compare 2 to 4 approved FirmLedger companies side by side: entity type, category, location, founded, team size, website, tagline, date registered, ownership, ti"},{"name":"list_plans","description":"The current FirmLedger Pro offers with price, billing and duration. With an API key it also says whether this account is already on Pro and whether a free trial"},{"name":"list_ad_packages","description":"The current Sponsored-placement advertising packages with price, billing and duration. With an API key it also lists the user's own listings and which of them c"},{"name":"prepare_upgrade","description":"Does NOT charge anything. Returns a personal link to FirmLedger's own checkout for the chosen Pro plan (optionally with a promo code). The user opens it, signs "},{"name":"prepare_advertising","description":"Does NOT charge anything. Checks that the listing belongs to this account and is approved, then returns a personal link to FirmLedger's own checkout for the cho"},{"name":"get_my_listings","description":"The listings this account owns or submitted, with moderation status, tick, scores, Pro perks, sponsorship, jobs and new-lead counts. Use first when the user ref"},{"name":"get_analytics","description":"Audience analytics for the user's own listings — views today/7/30 days/total, unique visitors, profile and website clicks, leads, the 30-day funnel, top visitor"},{"name":"list_leads","description":"The user's FirmLedger Leads inbox: inquiries received on their listings (box \"received\", the default), archived ones (\"archived\"), or inquiries they sent to oth"},{"name":"get_lead","description":"One conversation from the Leads inbox with the inquirer's details and every message, oldest first. Use before reply_to_lead so the reply fits the thread."},{"name":"get_watchlist","description":"The companies the user watches on FirmLedger, newest first."},{"name":"export_watchlist_csv","description":"The user's watchlist as CSV text (name, category, type, location, contact details, tech stack, verified owner, confidence, watched since) — the same file as the"},{"name":"get_notifications","description":"The user's in-app FirmLedger notifications, newest first, with the unread count. Set unread_only for just the unread ones."},{"name":"list_my_tickets","description":"The user's FirmLedger support tickets. Pass a ticket reference to read that ticket's full conversation."},{"name":"get_api_status","description":"The state of the FirmLedger REST API for this account and API key, as /api/v1/me and /api/v1/usage answer it: identity, plan and free-trial status, the key's sc"},{"name":"list_webhooks","description":"The account's webhook destinations with events, category filters, active state and signing-secret prefix — plus recent deliveries (status, HTTP code, attempts, "},{"name":"list_api_keys","description":"The account's API keys with label, prefix, scopes, usage totals and last use — never a raw key. Use it to name a key before revoking or re-scoping it."},{"name":"start_lead","description":"Start a new FirmLedger Leads conversation with another approved, claimed business. The signed-in member email is used automatically, the business email stays pr"},{"name":"reply_to_lead","description":"Send a reply in one of the user's lead conversations, exactly as the Reply box on the website does (the other party is notified). Requires the user's confirmati"},{"name":"set_lead_status","description":"Move a lead in the user's business inbox to new, contacted, qualified, won or lost. Requires the user's confirmation."},{"name":"watchlist_add","description":"Add an approved company to the user's watchlist so they are notified when its record changes. Requires the user's confirmation."},{"name":"watchlist_remove","description":"Remove a company from the user's watchlist. Requires the user's confirmation."},{"name":"create_support_ticket","description":"Open a FirmLedger support ticket for the user. Categories: billing, technical, listing, account, verification, other. Requires the user's confirmation of the ex"},{"name":"manage_job","description":"Manage a job owned by the member: edit its title, type, location, apply link or description, close it, or permanently remove it. Editing a live or closed role r"},{"name":"post_job","description":"Submit a job opening on one of the user's listings (the listing needs active Pro perks; up to 5 open or pending roles). Like the dashboard form, it goes to mode"},{"name":"mark_notifications_read","description":"Mark one notification (notification_id) or all of them (all: true) as read. Requires the user's confirmation."},{"name":"refresh_listing_scores","description":"Recompute the confidence, health and completeness scores of one of the user's listings from its current record — the dashboard's \"Re-align scores\". Requires the"},{"name":"refresh_listing_tech","description":"Scan the website of one of the user's listings and refresh its technology snapshot — the dashboard's \"Refresh tech\". Requires the user's confirmation."},{"name":"refresh_listing_news","description":"Look for new coverage of one of the user's approved listings with the same accuracy rules and moderation as the dashboard's \"Refresh news\" (once a minute per li"},{"name":"request_listing_removal","description":"Send a removal request for a listing the user owns or originally submitted. A moderator reviews it; nothing is removed until they accept. Requires the user's co"},{"name":"prepare_listing_claim","description":"Free. Prepare a link to claim an approved listing using DNS TXT, HTML meta tag or site badge. Creates nothing and never grants ownership. The user signs in, gen"},{"name":"create_webhook","description":"Register a webhook on the user’s account after explicit confirmation. Listing events will be sent to this URL. Requires Pro (including a free trial) and write:a"},{"name":"reply_to_ticket","description":"Send a reply in one of the user's own support tickets — the same thread the dashboard shows, and the same message an agent answers. Closed tickets cannot take r"},{"name":"manage_webhooks","description":"Create, update, pause, resume, rotate the signing secret of, test, retry a delivery for, or delete a webhook destination on the user's account — the same operat"},{"name":"manage_api_keys","description":"Create an API key (the raw key is returned once), revoke a key, or change a key's scopes — the dashboard's Developer API controls. Requires the user's confirmat"},{"name":"update_my_listing","description":"Change fields on a listing the user owns (name, tagline, description, website, email, phone, country, city, region, address, logo_url, founded, size, tags, soci"},{"name":"manage_lead","description":"Archive a conversation out of the business inbox, restore it, or delete it permanently — the dashboard's conversation controls. Requires the user's confirmation"},{"name":"connection_status","description":"Report what this FirmLedger connection can do: Free or Pro access, authentication and active free-trial status, and which tools and fields are available. Use wh"},{"name":"get_connection_status","description":"Report how this assistant is connected to FirmLedger: public (no sign-in), an API key, or the member's account through sign-in (OAuth). Shows Free or Pro, the t"},{"name":"request_authentication","description":"Connect this assistant to the member's own FirmLedger account by sign-in (OAuth), or renew or replace that connection. Call it when the member says \"connect me "},{"name":"revoke_connection","description":"Disconnect this assistant from the member's FirmLedger account. The sign-in is revoked on FirmLedger's side at once, and every token it issued stops working. Ca"}],"toolCount":49,"toolsHash":"c251deaabb27be3738c9a1e5e8e4749c409dfe1b2d279222a68d807987bac186","serverName":"firmledger","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T20:29:53.903Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":95,"error":null,"detail":{"tools":[{"name":"search_listings","description":"Search approved FirmLedger company records by name or keyword, category, country, city and verified status. Returns a short list (name, category, location, veri"},{"name":"get_listing","description":"The public FirmLedger profile of one company: description, category, location, verification state (tick, how ownership was proved, when it was last checked), co"},{"name":"get_relationships","description":"FirmLedger Pro. The recorded relationship graph of one company: founders, investors, parent companies, subsidiaries, products, services and partners — plus the "},{"name":"get_news","description":"FirmLedger Pro. Recent moderated news headlines about one company with dates, publishers and links — the same accuracy-gated stories shown on the profile's news"},{"name":"list_jobs","description":"FirmLedger Pro. Open roles at approved FirmLedger companies, filtered by company and/or location and keyword: title, company, location, posted date and where to"},{"name":"check_domain","description":"FirmLedger Pro. Given a website domain or URL, report whether an approved FirmLedger record uses it and return that record — useful for \"is this site legit?\" qu"},{"name":"list_categories","description":"Every FirmLedger category with its number of approved listings. Use to pick a valid category for search_listings."},{"name":"list_countries","description":"The countries present in the FirmLedger directory, each with its number of approved listings."},{"name":"prepare_listing_submission","description":"Does NOT create anything. Returns a link to the real FirmLedger submission form with the company name, website and (optional) category, country and city pre-fil"},{"name":"compare_listings","description":"Compare 2 to 4 approved FirmLedger companies side by side: entity type, category, location, founded, team size, website, tagline, date registered, ownership, ti"},{"name":"list_plans","description":"The current FirmLedger Pro offers with price, billing and duration. With an API key it also says whether this account is already on Pro and whether a free trial"},{"name":"list_ad_packages","description":"The current Sponsored-placement advertising packages with price, billing and duration. With an API key it also lists the user's own listings and which of them c"},{"name":"prepare_upgrade","description":"Does NOT charge anything. Returns a personal link to FirmLedger's own checkout for the chosen Pro plan (optionally with a promo code). The user opens it, signs "},{"name":"prepare_advertising","description":"Does NOT charge anything. Checks that the listing belongs to this account and is approved, then returns a personal link to FirmLedger's own checkout for the cho"},{"name":"get_my_listings","description":"The listings this account owns or submitted, with moderation status, tick, scores, Pro perks, sponsorship, jobs and new-lead counts. Use first when the user ref"},{"name":"get_analytics","description":"Audience analytics for the user's own listings — views today/7/30 days/total, unique visitors, profile and website clicks, leads, the 30-day funnel, top visitor"},{"name":"list_leads","description":"The user's FirmLedger Leads inbox: inquiries received on their listings (box \"received\", the default), archived ones (\"archived\"), or inquiries they sent to oth"},{"name":"get_lead","description":"One conversation from the Leads inbox with the inquirer's details and every message, oldest first. Use before reply_to_lead so the reply fits the thread."},{"name":"get_watchlist","description":"The companies the user watches on FirmLedger, newest first."},{"name":"export_watchlist_csv","description":"The user's watchlist as CSV text (name, category, type, location, contact details, tech stack, verified owner, confidence, watched since) — the same file as the"},{"name":"get_notifications","description":"The user's in-app FirmLedger notifications, newest first, with the unread count. Set unread_only for just the unread ones."},{"name":"list_my_tickets","description":"The user's FirmLedger support tickets. Pass a ticket reference to read that ticket's full conversation."},{"name":"get_api_status","description":"The state of the FirmLedger REST API for this account and API key, as /api/v1/me and /api/v1/usage answer it: identity, plan and free-trial status, the key's sc"},{"name":"list_webhooks","description":"The account's webhook destinations with events, category filters, active state and signing-secret prefix — plus recent deliveries (status, HTTP code, attempts, "},{"name":"list_api_keys","description":"The account's API keys with label, prefix, scopes, usage totals and last use — never a raw key. Use it to name a key before revoking or re-scoping it."},{"name":"start_lead","description":"Start a new FirmLedger Leads conversation with another approved, claimed business. The signed-in member email is used automatically, the business email stays pr"},{"name":"reply_to_lead","description":"Send a reply in one of the user's lead conversations, exactly as the Reply box on the website does (the other party is notified). Requires the user's confirmati"},{"name":"set_lead_status","description":"Move a lead in the user's business inbox to new, contacted, qualified, won or lost. Requires the user's confirmation."},{"name":"watchlist_add","description":"Add an approved company to the user's watchlist so they are notified when its record changes. Requires the user's confirmation."},{"name":"watchlist_remove","description":"Remove a company from the user's watchlist. Requires the user's confirmation."},{"name":"create_support_ticket","description":"Open a FirmLedger support ticket for the user. Categories: billing, technical, listing, account, verification, other. Requires the user's confirmation of the ex"},{"name":"manage_job","description":"Manage a job owned by the member: edit its title, type, location, apply link or description, close it, or permanently remove it. Editing a live or closed role r"},{"name":"post_job","description":"Submit a job opening on one of the user's listings (the listing needs active Pro perks; up to 5 open or pending roles). Like the dashboard form, it goes to mode"},{"name":"mark_notifications_read","description":"Mark one notification (notification_id) or all of them (all: true) as read. Requires the user's confirmation."},{"name":"refresh_listing_scores","description":"Recompute the confidence, health and completeness scores of one of the user's listings from its current record — the dashboard's \"Re-align scores\". Requires the"},{"name":"refresh_listing_tech","description":"Scan the website of one of the user's listings and refresh its technology snapshot — the dashboard's \"Refresh tech\". Requires the user's confirmation."},{"name":"refresh_listing_news","description":"Look for new coverage of one of the user's approved listings with the same accuracy rules and moderation as the dashboard's \"Refresh news\" (once a minute per li"},{"name":"request_listing_removal","description":"Send a removal request for a listing the user owns or originally submitted. A moderator reviews it; nothing is removed until they accept. Requires the user's co"},{"name":"prepare_listing_claim","description":"Free. Prepare a link to claim an approved listing using DNS TXT, HTML meta tag or site badge. Creates nothing and never grants ownership. The user signs in, gen"},{"name":"create_webhook","description":"Register a webhook on the user’s account after explicit confirmation. Listing events will be sent to this URL. Requires Pro (including a free trial) and write:a"},{"name":"reply_to_ticket","description":"Send a reply in one of the user's own support tickets — the same thread the dashboard shows, and the same message an agent answers. Closed tickets cannot take r"},{"name":"manage_webhooks","description":"Create, update, pause, resume, rotate the signing secret of, test, retry a delivery for, or delete a webhook destination on the user's account — the same operat"},{"name":"manage_api_keys","description":"Create an API key (the raw key is returned once), revoke a key, or change a key's scopes — the dashboard's Developer API controls. Requires the user's confirmat"},{"name":"update_my_listing","description":"Change fields on a listing the user owns (name, tagline, description, website, email, phone, country, city, region, address, logo_url, founded, size, tags, soci"},{"name":"manage_lead","description":"Archive a conversation out of the business inbox, restore it, or delete it permanently — the dashboard's conversation controls. Requires the user's confirmation"},{"name":"connection_status","description":"Report what this FirmLedger connection can do: Free or Pro access, authentication and active free-trial status, and which tools and fields are available. Use wh"},{"name":"get_connection_status","description":"Report how this assistant is connected to FirmLedger: public (no sign-in), an API key, or the member's account through sign-in (OAuth). Shows Free or Pro, the t"},{"name":"request_authentication","description":"Connect this assistant to the member's own FirmLedger account by sign-in (OAuth), or renew or replace that connection. Call it when the member says \"connect me "},{"name":"revoke_connection","description":"Disconnect this assistant from the member's FirmLedger account. The sign-in is revoked on FirmLedger's side at once, and every token it issued stops working. Ca"}],"toolCount":49,"toolsHash":"c251deaabb27be3738c9a1e5e8e4749c409dfe1b2d279222a68d807987bac186","serverName":"firmledger","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T13:30:53.293Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":92,"error":null,"detail":{"tools":[{"name":"search_listings","description":"Search approved FirmLedger company records by name or keyword, category, country, city and verified status. Returns a short list (name, category, location, veri"},{"name":"get_listing","description":"The public FirmLedger profile of one company: description, category, location, verification state (tick, how ownership was proved, when it was last checked), co"},{"name":"get_relationships","description":"FirmLedger Pro. The recorded relationship graph of one company: founders, investors, parent companies, subsidiaries, products, services and partners — plus the "},{"name":"get_news","description":"FirmLedger Pro. Recent moderated news headlines about one company with dates, publishers and links — the same accuracy-gated stories shown on the profile's news"},{"name":"list_jobs","description":"FirmLedger Pro. Open roles at approved FirmLedger companies, filtered by company and/or location and keyword: title, company, location, posted date and where to"},{"name":"check_domain","description":"FirmLedger Pro. Given a website domain or URL, report whether an approved FirmLedger record uses it and return that record — useful for \"is this site legit?\" qu"},{"name":"list_categories","description":"Every FirmLedger category with its number of approved listings. Use to pick a valid category for search_listings."},{"name":"list_countries","description":"The countries present in the FirmLedger directory, each with its number of approved listings."},{"name":"prepare_listing_submission","description":"Does NOT create anything. Returns a link to the real FirmLedger submission form with the company name, website and (optional) category, country and city pre-fil"},{"name":"compare_listings","description":"Compare 2 to 4 approved FirmLedger companies side by side: entity type, category, location, founded, team size, website, tagline, date registered, ownership, ti"},{"name":"list_plans","description":"The current FirmLedger Pro offers with price, billing and duration. With an API key it also says whether this account is already on Pro and whether a free trial"},{"name":"list_ad_packages","description":"The current Sponsored-placement advertising packages with price, billing and duration. With an API key it also lists the user's own listings and which of them c"},{"name":"prepare_upgrade","description":"Does NOT charge anything. Returns a personal link to FirmLedger's own checkout for the chosen Pro plan (optionally with a promo code). The user opens it, signs "},{"name":"prepare_advertising","description":"Does NOT charge anything. Checks that the listing belongs to this account and is approved, then returns a personal link to FirmLedger's own checkout for the cho"},{"name":"get_my_listings","description":"The listings this account owns or submitted, with moderation status, tick, scores, Pro perks, sponsorship, jobs and new-lead counts. Use first when the user ref"},{"name":"get_analytics","description":"Audience analytics for the user's own listings — views today/7/30 days/total, unique visitors, profile and website clicks, leads, the 30-day funnel, top visitor"},{"name":"list_leads","description":"The user's FirmLedger Leads inbox: inquiries received on their listings (box \"received\", the default), archived ones (\"archived\"), or inquiries they sent to oth"},{"name":"get_lead","description":"One conversation from the Leads inbox with the inquirer's details and every message, oldest first. Use before reply_to_lead so the reply fits the thread."},{"name":"get_watchlist","description":"The companies the user watches on FirmLedger, newest first."},{"name":"export_watchlist_csv","description":"The user's watchlist as CSV text (name, category, type, location, contact details, tech stack, verified owner, confidence, watched since) — the same file as the"},{"name":"get_notifications","description":"The user's in-app FirmLedger notifications, newest first, with the unread count. Set unread_only for just the unread ones."},{"name":"list_my_tickets","description":"The user's FirmLedger support tickets. Pass a ticket reference to read that ticket's full conversation."},{"name":"get_api_status","description":"The state of the FirmLedger REST API for this account and API key, as /api/v1/me and /api/v1/usage answer it: identity, plan and free-trial status, the key's sc"},{"name":"list_webhooks","description":"The account's webhook destinations with events, category filters, active state and signing-secret prefix — plus recent deliveries (status, HTTP code, attempts, "},{"name":"list_api_keys","description":"The account's API keys with label, prefix, scopes, usage totals and last use — never a raw key. Use it to name a key before revoking or re-scoping it."},{"name":"start_lead","description":"Start a new FirmLedger Leads conversation with another approved, claimed business. The signed-in member email is used automatically, the business email stays pr"},{"name":"reply_to_lead","description":"Send a reply in one of the user's lead conversations, exactly as the Reply box on the website does (the other party is notified). Requires the user's confirmati"},{"name":"set_lead_status","description":"Move a lead in the user's business inbox to new, contacted, qualified, won or lost. Requires the user's confirmation."},{"name":"watchlist_add","description":"Add an approved company to the user's watchlist so they are notified when its record changes. Requires the user's confirmation."},{"name":"watchlist_remove","description":"Remove a company from the user's watchlist. Requires the user's confirmation."},{"name":"create_support_ticket","description":"Open a FirmLedger support ticket for the user. Categories: billing, technical, listing, account, verification, other. Requires the user's confirmation of the ex"},{"name":"manage_job","description":"Manage a job owned by the member: edit its title, type, location, apply link or description, close it, or permanently remove it. Editing a live or closed role r"},{"name":"post_job","description":"Submit a job opening on one of the user's listings (the listing needs active Pro perks; up to 5 open or pending roles). Like the dashboard form, it goes to mode"},{"name":"mark_notifications_read","description":"Mark one notification (notification_id) or all of them (all: true) as read. Requires the user's confirmation."},{"name":"refresh_listing_scores","description":"Recompute the confidence, health and completeness scores of one of the user's listings from its current record — the dashboard's \"Re-align scores\". Requires the"},{"name":"refresh_listing_tech","description":"Scan the website of one of the user's listings and refresh its technology snapshot — the dashboard's \"Refresh tech\". Requires the user's confirmation."},{"name":"refresh_listing_news","description":"Look for new coverage of one of the user's approved listings with the same accuracy rules and moderation as the dashboard's \"Refresh news\" (once a minute per li"},{"name":"request_listing_removal","description":"Send a removal request for a listing the user owns or originally submitted. A moderator reviews it; nothing is removed until they accept. Requires the user's co"},{"name":"prepare_listing_claim","description":"Free. Prepare a link to claim an approved listing using DNS TXT, HTML meta tag or site badge. Creates nothing and never grants ownership. The user signs in, gen"},{"name":"create_webhook","description":"Register a webhook on the user’s account after explicit confirmation. Listing events will be sent to this URL. Requires Pro (including a free trial) and write:a"},{"name":"reply_to_ticket","description":"Send a reply in one of the user's own support tickets — the same thread the dashboard shows, and the same message an agent answers. Closed tickets cannot take r"},{"name":"manage_webhooks","description":"Create, update, pause, resume, rotate the signing secret of, test, retry a delivery for, or delete a webhook destination on the user's account — the same operat"},{"name":"manage_api_keys","description":"Create an API key (the raw key is returned once), revoke a key, or change a key's scopes — the dashboard's Developer API controls. Requires the user's confirmat"},{"name":"update_my_listing","description":"Change fields on a listing the user owns (name, tagline, description, website, email, phone, country, city, region, address, logo_url, founded, size, tags, soci"},{"name":"manage_lead","description":"Archive a conversation out of the business inbox, restore it, or delete it permanently — the dashboard's conversation controls. Requires the user's confirmation"},{"name":"connection_status","description":"Report what this FirmLedger connection can do: Free or Pro access, authentication and active free-trial status, and which tools and fields are available. Use wh"},{"name":"get_connection_status","description":"Report how this assistant is connected to FirmLedger: public (no sign-in), an API key, or the member's account through sign-in (OAuth). Shows Free or Pro, the t"},{"name":"request_authentication","description":"Connect this assistant to the member's own FirmLedger account by sign-in (OAuth), or renew or replace that connection. Call it when the member says \"connect me "},{"name":"revoke_connection","description":"Disconnect this assistant from the member's FirmLedger account. The sign-in is revoked on FirmLedger's side at once, and every token it issued stops working. Ca"}],"toolCount":49,"toolsHash":"c251deaabb27be3738c9a1e5e8e4749c409dfe1b2d279222a68d807987bac186","serverName":"firmledger","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"search_listings","description":"Search approved FirmLedger company records by name or keyword, category, country, city and verified status. Returns a short list (name, category, location, veri"},{"name":"get_listing","description":"The public FirmLedger profile of one company: description, category, location, verification state (tick, how ownership was proved, when it was last checked), co"},{"name":"get_relationships","description":"FirmLedger Pro. The recorded relationship graph of one company: founders, investors, parent companies, subsidiaries, products, services and partners — plus the "},{"name":"get_news","description":"FirmLedger Pro. Recent moderated news headlines about one company with dates, publishers and links — the same accuracy-gated stories shown on the profile's news"},{"name":"list_jobs","description":"FirmLedger Pro. Open roles at approved FirmLedger companies, filtered by company and/or location and keyword: title, company, location, posted date and where to"},{"name":"check_domain","description":"FirmLedger Pro. Given a website domain or URL, report whether an approved FirmLedger record uses it and return that record — useful for \"is this site legit?\" qu"},{"name":"list_categories","description":"Every FirmLedger category with its number of approved listings. Use to pick a valid category for search_listings."},{"name":"list_countries","description":"The countries present in the FirmLedger directory, each with its number of approved listings."},{"name":"prepare_listing_submission","description":"Does NOT create anything. Returns a link to the real FirmLedger submission form with the company name, website and (optional) category, country and city pre-fil"},{"name":"compare_listings","description":"Compare 2 to 4 approved FirmLedger companies side by side: entity type, category, location, founded, team size, website, tagline, date registered, ownership, ti"},{"name":"list_plans","description":"The current FirmLedger Pro offers with price, billing and duration. With an API key it also says whether this account is already on Pro and whether a free trial"},{"name":"list_ad_packages","description":"The current Sponsored-placement advertising packages with price, billing and duration. With an API key it also lists the user's own listings and which of them c"},{"name":"prepare_upgrade","description":"Does NOT charge anything. Returns a personal link to FirmLedger's own checkout for the chosen Pro plan (optionally with a promo code). The user opens it, signs "},{"name":"prepare_advertising","description":"Does NOT charge anything. Checks that the listing belongs to this account and is approved, then returns a personal link to FirmLedger's own checkout for the cho"},{"name":"get_my_listings","description":"The listings this account owns or submitted, with moderation status, tick, scores, Pro perks, sponsorship, jobs and new-lead counts. Use first when the user ref"},{"name":"get_analytics","description":"Audience analytics for the user's own listings — views today/7/30 days/total, unique visitors, profile and website clicks, leads, the 30-day funnel, top visitor"},{"name":"list_leads","description":"The user's FirmLedger Leads inbox: inquiries received on their listings (box \"received\", the default), archived ones (\"archived\"), or inquiries they sent to oth"},{"name":"get_lead","description":"One conversation from the Leads inbox with the inquirer's details and every message, oldest first. Use before reply_to_lead so the reply fits the thread."},{"name":"get_watchlist","description":"The companies the user watches on FirmLedger, newest first."},{"name":"export_watchlist_csv","description":"The user's watchlist as CSV text (name, category, type, location, contact details, tech stack, verified owner, confidence, watched since) — the same file as the"},{"name":"get_notifications","description":"The user's in-app FirmLedger notifications, newest first, with the unread count. Set unread_only for just the unread ones."},{"name":"list_my_tickets","description":"The user's FirmLedger support tickets. Pass a ticket reference to read that ticket's full conversation."},{"name":"get_api_status","description":"The state of the FirmLedger REST API for this account and API key, as /api/v1/me and /api/v1/usage answer it: identity, plan and free-trial status, the key's sc"},{"name":"list_webhooks","description":"The account's webhook destinations with events, category filters, active state and signing-secret prefix — plus recent deliveries (status, HTTP code, attempts, "},{"name":"list_api_keys","description":"The account's API keys with label, prefix, scopes, usage totals and last use — never a raw key. Use it to name a key before revoking or re-scoping it."},{"name":"start_lead","description":"Start a new FirmLedger Leads conversation with another approved, claimed business. The signed-in member email is used automatically, the business email stays pr"},{"name":"reply_to_lead","description":"Send a reply in one of the user's lead conversations, exactly as the Reply box on the website does (the other party is notified). Requires the user's confirmati"},{"name":"set_lead_status","description":"Move a lead in the user's business inbox to new, contacted, qualified, won or lost. Requires the user's confirmation."},{"name":"watchlist_add","description":"Add an approved company to the user's watchlist so they are notified when its record changes. Requires the user's confirmation."},{"name":"watchlist_remove","description":"Remove a company from the user's watchlist. Requires the user's confirmation."},{"name":"create_support_ticket","description":"Open a FirmLedger support ticket for the user. Categories: billing, technical, listing, account, verification, other. Requires the user's confirmation of the ex"},{"name":"manage_job","description":"Manage a job owned by the member: edit its title, type, location, apply link or description, close it, or permanently remove it. Editing a live or closed role r"},{"name":"post_job","description":"Submit a job opening on one of the user's listings (the listing needs active Pro perks; up to 5 open or pending roles). Like the dashboard form, it goes to mode"},{"name":"mark_notifications_read","description":"Mark one notification (notification_id) or all of them (all: true) as read. Requires the user's confirmation."},{"name":"refresh_listing_scores","description":"Recompute the confidence, health and completeness scores of one of the user's listings from its current record — the dashboard's \"Re-align scores\". Requires the"},{"name":"refresh_listing_tech","description":"Scan the website of one of the user's listings and refresh its technology snapshot — the dashboard's \"Refresh tech\". Requires the user's confirmation."},{"name":"refresh_listing_news","description":"Look for new coverage of one of the user's approved listings with the same accuracy rules and moderation as the dashboard's \"Refresh news\" (once a minute per li"},{"name":"request_listing_removal","description":"Send a removal request for a listing the user owns or originally submitted. A moderator reviews it; nothing is removed until they accept. Requires the user's co"},{"name":"prepare_listing_claim","description":"Free. Prepare a link to claim an approved listing using DNS TXT, HTML meta tag or site badge. Creates nothing and never grants ownership. The user signs in, gen"},{"name":"create_webhook","description":"Register a webhook on the user’s account after explicit confirmation. Listing events will be sent to this URL. Requires Pro (including a free trial) and write:a"},{"name":"reply_to_ticket","description":"Send a reply in one of the user's own support tickets — the same thread the dashboard shows, and the same message an agent answers. Closed tickets cannot take r"},{"name":"manage_webhooks","description":"Create, update, pause, resume, rotate the signing secret of, test, retry a delivery for, or delete a webhook destination on the user's account — the same operat"},{"name":"manage_api_keys","description":"Create an API key (the raw key is returned once), revoke a key, or change a key's scopes — the dashboard's Developer API controls. Requires the user's confirmat"},{"name":"update_my_listing","description":"Change fields on a listing the user owns (name, tagline, description, website, email, phone, country, city, region, address, logo_url, founded, size, tags, soci"},{"name":"manage_lead","description":"Archive a conversation out of the business inbox, restore it, or delete it permanently — the dashboard's conversation controls. Requires the user's confirmation"},{"name":"connection_status","description":"Report what this FirmLedger connection can do: Free or Pro access, authentication and active free-trial status, and which tools and fields are available. Use wh"},{"name":"get_connection_status","description":"Report how this assistant is connected to FirmLedger: public (no sign-in), an API key, or the member's account through sign-in (OAuth). Shows Free or Pro, the t"},{"name":"request_authentication","description":"Connect this assistant to the member's own FirmLedger account by sign-in (OAuth), or renew or replace that connection. Call it when the member says \"connect me "},{"name":"revoke_connection","description":"Disconnect this assistant from the member's FirmLedger account. The sign-in is revoked on FirmLedger's side at once, and every token it issued stops working. Ca"}],"package":null,"toolSurface":{"id":"ts_mub2wnaqddd2","endpointId":"ep_v2zkspd8gw75","hash":"c251deaabb27be3738c9a1e5e8e4749c409dfe1b2d279222a68d807987bac186","toolCount":49,"serverName":"firmledger","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-08T11:22:38.896Z","lastSeenAt":"2026-10-12T00:29:14.898Z","observations":14,"toolNames":["search_listings","get_listing","get_relationships","get_news","list_jobs","check_domain","list_categories","list_countries","prepare_listing_submission","compare_listings","list_plans","list_ad_packages","prepare_upgrade","prepare_advertising","get_my_listings","get_analytics","list_leads","get_lead","get_watchlist","export_watchlist_csv","get_notifications","list_my_tickets","get_api_status","list_webhooks","list_api_keys","start_lead","reply_to_lead","set_lead_status","watchlist_add","watchlist_remove","create_support_ticket","manage_job","post_job","mark_notifications_read","refresh_listing_scores","refresh_listing_tech","refresh_listing_news","request_listing_removal","prepare_listing_claim","create_webhook","reply_to_ticket","manage_webhooks","manage_api_keys","update_my_listing","manage_lead","connection_status","get_connection_status","request_authentication","revoke_connection"],"distinctSurfaces":2},"endpointFacts":[{"id":"ep_v2zkspd8gw75","url":"https://mcp.firmledger.co.ke/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-10T03:25:07.403Z","auth":{"observedAt":"2026-10-10T03:25:07.588Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://mcp.firmledger.co.ke/.well-known/oauth-protected-resource/mcp","resource":"https://mcp.firmledger.co.ke/mcp","authorizationServers":["https://mcp.firmledger.co.ke"],"scopesSupported":["mcp","read:account","write:account"]},"authorizationServer":{"url":"https://mcp.firmledger.co.ke/.well-known/oauth-authorization-server","issuer":"https://mcp.firmledger.co.ke","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":null},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-10T03:25:07.770Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"mcp.firmledger.co.ke","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-09-28T14:11:06.000Z","validTo":"2026-12-27T14:11:05.000Z","daysToExpiry":76,"sanCount":1,"fingerprint256":"90:85:2A:6A:F2:5A:95:9C:97:68:A0:B2:54:12:63:00:95:F7:EE:69:05:13:6B:C5:23:BD:D5:AC:63:4E:FA:97"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"ke.co.firmledger/firmledger","url":"https://registry.modelcontextprotocol.io/v0/servers/ke.co.firmledger%2Ffirmledger","firstSeenAt":"2026-09-30T03:18:59.980Z","fetchedAt":"2026-10-11T14:21:47.669Z","normalizedAt":"2026-10-11T14:21:47.669Z"}]},"firstSeenAt":"2026-09-30T03:18:59.980Z","updatedAt":"2026-10-12T00:32:00.562Z"}