{"id":3019072,"recorded_at":"2026-11-04T14:54:38.960322Z","observed_at":"2026-11-04T14:54:38.960246Z","subject_kind":"endpoint","subject":"f2f84687-f8e9-4c84-96bd-ec72a6b2bdd0","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":46,"tools":[{"description":"Apply a discount code the user gives you to a registration that isn't paid yet.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"},"code":{"type":"string"}},"required":["business_id","code"],"type":"object"},"name":"apply_discount_code"},{"description":"CAC's official registration fees, line by line, for a business name, a limited company (by authorised share capital, default ₦1,000,000) or an NGO (Incorporated Trustees). Use it for any question about what CAC charges to register. These are government fees, not FastCAC's price.","inputSchema":{"properties":{"entity":{"enum":["business_name","company","ngo"],"type":"string"},"share_capital":{"description":"Companies only: authorised share capital in naira.","type":"number"}},"required":["entity"],"type":"object"},"name":"calculate_cac_fees"},{"description":"For a CAC business name: which annual returns are due from its registration date, which are overdue, CAC's estimated charge, and when the next one is due. Needs the registration date (it's on the certificate). Without it, the annual returns checker on fastcac.com looks the date up by BN number.","inputSchema":{"properties":{"registration_date":{"description":"YYYY-MM-DD, from the CAC certificate.","type":"string"}},"required":["registration_date"],"type":"object"},"name":"check_annual_returns"},{"description":"CAC's verdict on a proposed name, the same check fastcac.com's name checker runs: CAC's naming rules first, then CAC's own compliance and similarity engine. Returns `tone` (ok, caveat = a certificate is needed, blocked), a plain `message`, `code` (CAC's 00-14; none when one of CAC's naming rules blocked it), `similar_names`/`most_similar_name`/`similarity_score`, and `alternatives`: names to offer, each already passing the rules (for a name missing its ending, the name with each accepted ending: Ventures, Enterprises, Services, Concepts, Hub, Fashion, Beauty, Biz, or Limited/Ltd for a company). `line_of_business` must be one of CAC's entries; anything else returns error line_of_business_invalid with `choices` to ask about, never a guess. A name ending in Limited/Ltd/PLC is checked as a company unless `name_type` says otherwise. An `error` is never a verdict: say CAC didn't answer.","inputSchema":{"properties":{"line_of_business":{"description":"An exact entry from CAC's line-of-business picklist (search_line_of_business).","type":"string"},"name_type":{"description":"Optional: business name or company (Ltd). Inferred from the name's ending when left out.","enum":["business_name","company"],"type":"string"},"proposed_name":{"type":"string"}},"required":["proposed_name","line_of_business"],"type":"object"},"name":"check_business_name_compliance"},{"description":"Search CAC's public register for names matching or similar to a name, across every registration type (business names, companies, LLPs, trustees), ranked like fastcac.com's public search. CAC rejects a new name that's too close to any of them, active or inactive. `exact_match` is the registered name that is this name (case, spacing and endings like Ltd or Ventures ignored), or null. close_matches come best first, each with `match` (exact, close, similar, or null when it only shares a distinctive word). Lead with exact_match when there is one; when it's null, say plainly that nothing is registered under this exact name, then mention the closest few. Any close match means the name is at risk; CAC makes the final call (check_business_name_compliance asks it). For an RC/BN number use search_cac_register instead.","inputSchema":{"properties":{"name":{"description":"The business name to check.","type":"string"}},"required":["name"],"type":"object"},"name":"check_name_availability"},{"description":"Start a new registration: creates the business (as a draft) with the name the user wants to register, in the workspace they're in (pass `workspace` only when they ask for the other one). A personal registration needs a verified WhatsApp number: without one it returns whatsapp_unverified (request_whatsapp_verification sets it up).","inputSchema":{"additionalProperties":false,"properties":{"name":{"description":"The business name they want to register.","type":"string"},"workspace":{"enum":["personal","agent"],"type":"string"}},"required":["name"],"type":"object"},"name":"create_business"},{"description":"Make a share link and show it as a Copy button. If one is already live, this replaces it (the old one stops working), so it shows a Confirm button first. review_enabled (status links) lets the viewer review the registration details.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"},"purpose":{"enum":["status_view","data_intake"],"type":"string"},"review_enabled":{"type":"boolean"}},"required":["business_id"],"type":"object"},"name":"create_share_link"},{"description":"Delete one of their businesses that hasn't been paid for (draft or pending_payment) with its registration details and documents. If it can be deleted, a Confirm button is shown and nothing is deleted until they tap it; if not, you get the reason (e.g. it's been paid for). Call it only when they ask to delete it - not when they just ask whether they can.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"}},"required":["business_id"],"type":"object"},"name":"delete_business"},{"description":"Get their NIN slip for them from NIMC's record for their confirmed NIN, instead of them uploading a photo of it. Free to them. Only after they agree, and only once their NIN is confirmed. The slip is never shown to them.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"}},"required":["business_id"],"type":"object"},"name":"fetch_nin_slip"},{"description":"Brainstorm CAC-registrable business names for an idea. Each name comes back already checked against CAC's registry, with `availability`: likely_available, similar_names_exist, or unchecked (CAC's search was busy).","inputSchema":{"properties":{"idea":{"description":"Short description of the business.","type":"string"},"line_of_business":{"description":"Optional CAC line of business to keep every name in.","type":"string"}},"required":["idea"],"type":"object"},"name":"generate_business_names"},{"description":"Whether the person finished a step you handed them on FastCAC (a tool returned status 'action_required' with an action_id): confirming a change, paying, uploading documents, entering their NIN or verifying WhatsApp. Returns status (pending, started, completed, failed, cancelled, expired) and next_step in words.","inputSchema":{"additionalProperties":false,"properties":{"action_id":{"description":"From the tool's result.","maxLength":64,"type":"string"}},"required":["action_id"],"type":"object"},"name":"get_action_status"},{"description":"For an approved registration: show Download buttons for the CAC certificate and status report, once we have them.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"}},"required":["business_id"],"type":"object"},"name":"get_cac_documents"},{"description":"Get the Tax ID (TIN) CAC's public search shows for a registered business. Takes company_id, rc_number and classification_id from a search_cac_register result. Returns { name, rc_number, tax_id }, or an error 'not_found' when CAC has none.","inputSchema":{"additionalProperties":false,"properties":{"classification_id":{"description":"classification_id from search_cac_register.","maximum":5,"minimum":1,"type":"integer"},"company_id":{"description":"company_id from search_cac_register.","minimum":1,"type":"integer"},"rc_number":{"description":"rc_number from search_cac_register, e.g. '1234567'.","pattern":"^[A-Za-z0-9-]{1,20}$","type":"string"}},"required":["company_id","rc_number","classification_id"],"type":"object"},"name":"get_cac_tax_id"},{"description":"What they can do right now and why not: the workspace they're in and who they register for, the Agent subscription (status, renewal, days left), credits, WhatsApp, personal drafts, whether a registration can start in each workspace (and the tool that unblocks it), credit purchases, and features switched on for them.","inputSchema":{"additionalProperties":false,"properties":{},"required":[],"type":"object"},"name":"get_capabilities"},{"description":"Their credit balance, recent credit activity, Agent subscription status, and the credit packs they can buy (pack_id for request_credit_purchase).","inputSchema":{"additionalProperties":false,"properties":{},"required":[],"type":"object"},"name":"get_credits"},{"description":"Where a request from start_nin_request stands: status (waiting_for_person, started, settling, verified, failed, expired, paid, delivered, delivery_failed), next_step in words, the products and their naira prices. Never the NIN or the person's details: those go only to the person.","inputSchema":{"additionalProperties":false,"properties":{"request_handle":{"description":"From start_nin_request.","maxLength":64,"type":"string"}},"required":["request_handle"],"type":"object"},"name":"get_nin_request_status"},{"description":"How they get updates: in-app, email, WhatsApp, and WhatsApp tips and offers.","inputSchema":{"additionalProperties":false,"properties":{},"required":[],"type":"object"},"name":"get_notification_preferences"},{"description":"Read where one of the user's registrations stands: status, stage, next action and action_path, which form sections are done, missing or invalid fields (names only), each document's status and what's wrong with it, payment status, whether their NIN is confirmed, and for a queried registration CAC's reason plus each flagged item with its fix_path and whether it's resolved. It never includes personal details (NIN, date of birth, phone, addresses); those are on the registration page.","inputSchema":{"properties":{"business_id":{"description":"A business id from list_my_businesses.","type":"string"}},"required":["business_id"],"type":"object"},"name":"get_registration_state"},{"description":"Their Agent subscription: status (none, trialing, active, past_due...) and period end.","inputSchema":{"additionalProperties":false,"properties":{},"required":[],"type":"object"},"name":"get_subscription"},{"description":"List the signed-in user's businesses with each registration's stage, the next action, and action_path (the dashboard page for that action).","inputSchema":{"properties":{},"type":"object"},"name":"list_my_businesses"},{"description":"Their recent notifications (unread only by default).","inputSchema":{"additionalProperties":false,"properties":{"unread_only":{"type":"boolean"}},"required":[],"type":"object"},"name":"list_notifications"},{"description":"A business's share links: the status link (anyone with it sees progress) and the details form link (the owner fills in their own details). Whether each is live, when it expires. Never the link itself.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"}},"required":["business_id"],"type":"object"},"name":"list_share_links"},{"description":"Show a button to Paystack's page for changing their card or cancelling the subscription.","inputSchema":{"additionalProperties":false,"properties":{},"required":[],"type":"object"},"name":"manage_subscription"},{"description":"Mark all their notifications as read.","inputSchema":{"additionalProperties":false,"properties":{},"required":[],"type":"object"},"name":"mark_notifications_read"},{"description":"Run the checks again on documents that are stuck (e.g. the check service was down, or the NIN slip is waiting on the passport photo). Not for a document that failed - that needs a new upload.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"}},"required":["business_id"],"type":"object"},"name":"recheck_documents"},{"description":"Ask CAC now for the latest on a registration that's with them (submitted or queried). Changes arrive as system events too.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"}},"required":["business_id"],"type":"object"},"name":"refresh_cac_status"},{"description":"Remove the discount code from a registration that isn't paid yet.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"}},"required":["business_id"],"type":"object"},"name":"remove_discount_code"},{"description":"Remove their WhatsApp number. Shows a Confirm button first.","inputSchema":{"additionalProperties":false,"properties":{},"required":[],"type":"object"},"name":"remove_whatsapp"},{"description":"Rename a business (its display name; not allowed once CAC approved it).","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"},"name":{"type":"string"}},"required":["business_id","name"],"type":"object"},"name":"rename_business"},{"description":"Show a Pay button for a credit pack (Agent subscribers). Use a pack_id from get_credits.","inputSchema":{"additionalProperties":false,"properties":{"pack_id":{"type":"string"}},"required":["pack_id"],"type":"object"},"name":"request_credit_purchase"},{"description":"Show an Upload button for a registration's documents (passport photo, NIN slip, signature, and a supporting document if CAC's name check asked for one). Without document_types it asks for every required document still missing or failed; name document_types to ask for specific ones again (e.g. CAC queried the passport photo). Files never pass through you; each verdict arrives as a system event.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"},"document_types":{"items":{"enum":["signature","means_of_id","passport","supporting_doc"],"type":"string"},"type":"array"}},"required":["business_id"],"type":"object"},"name":"request_documents"},{"description":"Show a secure NIN field for a business so the user can verify their identity. Their name, date of birth and gender are filled from it. The NIN is typed into that field, not into the conversation.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"}},"required":["business_id"],"type":"object"},"name":"request_nin"},{"description":"Show a Pay button for a registration once its form is complete. The amount comes from FastCAC's pricing (less any discount code applied). You never see card details or the payment link; the outcome arrives as a system event.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"}},"required":["business_id"],"type":"object"},"name":"request_payment"},{"description":"Show a Start free trial button for the Agent subscription (for people registering businesses for clients). 14 days free, set up on Paystack.","inputSchema":{"additionalProperties":false,"properties":{},"required":[],"type":"object"},"name":"request_subscription"},{"description":"Show a Verify on WhatsApp button. Needed before starting a business or paying (create_business / request_payment return whatsapp_unverified).","inputSchema":{"additionalProperties":false,"properties":{},"required":[],"type":"object"},"name":"request_whatsapp_verification"},{"description":"Turn off a business's share link. Shows a Confirm button first.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"},"purpose":{"enum":["status_view","data_intake"],"type":"string"}},"required":["business_id"],"type":"object"},"name":"revoke_share_link"},{"description":"Search the Corporate Affairs Commission's (CAC) public register for businesses already registered in Nigeria, by name or by RC/BN number. Returns `results`: name, rc_number (the BN number for a business name), registration_date, classification, nature_of_business, status (e.g. ACTIVE or INACTIVE), company_id, classification_id and match (exact, close, similar or null), best match first; RC/BN numbers (\"RC 8911267\") are read as numbers. Lead with the result whose match is exact; when none is, say plainly that nothing is registered under that exact name before listing the closest. This lists what exists; it isn't an availability check (check_name_availability and check_business_name_compliance are). An `error` never means there's no match.","inputSchema":{"additionalProperties":false,"properties":{"entity_type":{"description":"Limit to one kind of registration. Defaults to ALL.","enum":["ALL","BUSINESS NAME","COMPANY","INCORPORATED TRUSTEE","LIMITED PARTNERSHIP","LIMITED LIABILITY PARTNERSHIP"],"type":"string"},"query":{"description":"A business name, or an RC/BN number such as '1234567'.","maxLength":100,"minLength":3,"type":"string"}},"required":["query"],"type":"object"},"name":"search_cac_register"},{"description":"Find exact entries in CAC's line-of-business picklist matching what the business does.","inputSchema":{"additionalProperties":false,"properties":{"query":{"type":"string"}},"required":["query"],"type":"object"},"name":"search_line_of_business"},{"description":"Turn on or off the 'review the details' section on a business's live status link.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"},"enabled":{"type":"boolean"}},"required":["business_id","enabled"],"type":"object"},"name":"set_share_review"},{"description":"Show a Copy button for a business's live share link.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"},"purpose":{"enum":["status_view","data_intake"],"type":"string"}},"required":["business_id"],"type":"object"},"name":"show_share_link"},{"description":"Start a paid request on fastcac.com for: 'slip' = the person's NIMC NIN slip (PDF and print-ready image), using their NIN; 'phone' = the person's NIN, found with the phone number they registered with NIMC (on fastcac.com they can add the slip; you can't request it here). Returns a link for the person and a request_handle for you. The person does a live face check and pays on fastcac.com (₦1,000 for the slip; ₦500 for the NIN, ₦1,200 with the slip); the result goes only to them. Starting is free and charges nothing.","inputSchema":{"additionalProperties":false,"properties":{"kind":{"description":"'slip' if they know their NIN and want the slip; 'phone' to find their NIN (the person chooses whether to add the slip on fastcac.com).","enum":["slip","phone"],"type":"string"}},"required":["kind"],"type":"object"},"name":"start_nin_request"},{"description":"Switch the dashboard between their Personal workspace (their own businesses) and the Agent workspace (businesses they register for clients; needs the subscription).","inputSchema":{"additionalProperties":false,"properties":{"workspace":{"enum":["personal","agent"],"type":"string"}},"required":["workspace"],"type":"object"},"name":"switch_workspace"},{"description":"Turn update channels on or off. Only pass the ones they asked to change.","inputSchema":{"additionalProperties":false,"properties":{"email_enabled":{"type":"boolean"},"in_app_enabled":{"type":"boolean"},"whatsapp_enabled":{"type":"boolean"},"whatsapp_marketing_enabled":{"type":"boolean"}},"required":[],"type":"object"},"name":"update_notification_preferences"},{"description":"Change their account name (first and/or last name). Not a registration's proprietor name.","inputSchema":{"additionalProperties":false,"properties":{"first_name":{"type":"string"},"last_name":{"type":"string"}},"required":[],"type":"object"},"name":"update_profile"},{"description":"Save registration form fields from what the user told you. Only these fields can be set: proposedOption1 (Proposed business name), lineOfBusiness (Line of business (exact CAC picklist entry)), proprietorPhonenumber (Phone number (digits only)), proprietorEmail (Email), proprietorState (State), proprietorLga (LGA), proprietorCity (City), proprietorStreetNumber (Street number), proprietorServiceAddress (Street name / address), proprietorPostcode (Postcode (digits only)), companyState (Company state), companyCity (Company city), companyStreetNumber (Company street number), companyAddress (Company street name / address), companyEmail (Company email). Returns what saved, anything invalid, and what's still missing.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"},"fields":{"description":"Field name -> value.","type":"object"}},"required":["business_id","fields"],"type":"object"},"name":"update_registration_fields"},{"description":"Use the photo from their confirmed NIN record as the passport photograph instead of uploading one. Only after they agree, and only once their NIN is confirmed.","inputSchema":{"additionalProperties":false,"properties":{"business_id":{"type":"string"}},"required":["business_id"],"type":"object"},"name":"use_nin_photo_for_passport"}]},"body_sha256":"09135ae87ed6d07a3458b1eff7ebab87a395a679691b50659339b7e1ea21f448","prev_id":null,"leaf":"0xf6a090a37dc84238d38816f67f9807b90fd14f7b8f704678b31483042afaa27e","leaf_text":"{\"body\":\"09135ae87ed6d07a3458b1eff7ebab87a395a679691b50659339b7e1ea21f448\",\"id\":3019072,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793804078960246,\"prev\":null,\"subject\":\"f2f84687-f8e9-4c84-96bd-ec72a6b2bdd0\",\"subject_kind\":\"endpoint\"}","day":null,"proof":[]}