{"serverId":"mcp-registry/com.issafu/site","tools":[{"name":"agent_session_start","fixed":{"name":"agent_session_start","description":"Give a Solana address; get the exact message to sign. A signature, not a transaction: no fee, nothing moves. Then call agent_session_verify with the base64 signature.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["address"],"properties":{"address":{"type":"string","maxLength":44,"minLength":32}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Start a wallet sign-in (Sign In With Solana)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":118,"tokensAfter":118},{"name":"claim_start","fixed":{"name":"claim_start","description":"Names the entry (scheme + value, e.g. lei); returns the proof domain the register lists and the token to place as a TXT record, a well-known file, or via a verified email there.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session","scheme","value"],"properties":{"value":{"type":"string","maxLength":120,"minLength":1},"scheme":{"type":"string","maxLength":40,"minLength":2},"session":{"type":"string","maxLength":300,"minLength":20,"description":"the session token from agent_session_verify"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Claim a register entry (proof of the register's own domain)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":171,"tokensAfter":171},{"name":"claim_status","fixed":{"name":"claim_status","description":"Every claim of this account with its status and, while pending, the instructions.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session"],"properties":{"session":{"type":"string","maxLength":300,"minLength":20,"description":"the session token from agent_session_verify"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"My claims"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":109,"tokensAfter":109},{"name":"claim_verify","fixed":{"name":"claim_verify","description":"The server reads DNS, the well-known file and the verified email; verified claims are badges on the profile.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session","id"],"properties":{"id":{"type":"string","maxLength":60,"minLength":10},"session":{"type":"string","maxLength":300,"minLength":20,"description":"the session token from agent_session_verify"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Check a claim's proof now"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":133,"tokensAfter":133},{"name":"dataset_compare","fixed":{"name":"dataset_compare","description":"The rows of the Issafu dataset whose column is any of the given values, in the order given — for \"X vs Y\" questions.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["column","values"],"properties":{"column":{"type":"string","minLength":1},"values":{"type":"array","items":{"type":"string","minLength":1},"maxItems":10,"minItems":2}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Compare rows side by side"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":127,"tokensAfter":127},{"name":"dataset_search","fixed":{"name":"dataset_search","description":"Rows of the Issafu dataset whose cells contain the query (case-insensitive), up to 50.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"limit":{"type":"integer","maximum":50,"minimum":1},"query":{"type":"string","minLength":1,"description":"text to look for in any cell"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Search the dataset"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":115,"tokensAfter":115},{"name":"dataset_stats","fixed":{"name":"dataset_stats","description":"count, min, max, mean, median and sum of a numeric column of the Issafu dataset (grouping commas and currency are handled; non-numeric rows are excluded and counted).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["column"],"properties":{"column":{"type":"string","minLength":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Summary statistics for a numeric column"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":111,"tokensAfter":111},{"name":"enquiry_describe","fixed":{"name":"enquiry_describe","description":"Read first. States plainly what submit_enquiry does on Issafu: it starts an enquiry with human providers who quote directly. Nothing is bought, ordered or paid; no quote is guaranteed; it is free. Also returns who receives the details, the consent wording, and how the person confirms.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"What you get: an ENQUIRY with a human (not a purchase, not a guaranteed quote)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":120,"tokensAfter":120},{"name":"entities_export","fixed":{"name":"entities_export","description":"Every entity of Issafu register, 200 a page, with provenance. Needs an access key (Authorization: Bearer); export pages are metered per key per day. Without a key the answer says how to get one.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","maximum":200,"minimum":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"The whole register, in pages (access key required)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":128,"tokensAfter":128},{"name":"entities_schema","fixed":{"name":"entities_schema","description":"Which fields the Issafu register register carries and on how many entities, the regions and services, the identifier schemes, and how to cite it. Call this first.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"The register's shape, counts and provenance"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":85,"tokensAfter":85},{"name":"entities_search","fixed":{"name":"entities_search","description":"Entities of Issafu register whose name, commercial name, website, address or authority contains the query, optionally within a region (id or name) and a service (slug or name). Up to 50 rows.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"q":{"type":"string","maxLength":120},"limit":{"type":"integer","maximum":50,"minimum":1},"region":{"type":"string","maxLength":60},"service":{"type":"string","maxLength":80}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Search the register"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":150,"tokensAfter":150},{"name":"entity_lookup","fixed":{"name":"entity_lookup","description":"The Issafu register entry for a firm, by its register identifier (scheme + value, e.g. lei) or by the slug of its page. Exact match; returns the whole record with its page.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"slug":{"type":"string","maxLength":120,"minLength":1},"value":{"type":"string","maxLength":80,"minLength":1},"scheme":{"type":"string","maxLength":24,"minLength":2,"description":"identifier scheme, e.g. lei, fca_frn, tdlr_license"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"One entity by its register identifier or slug"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":160,"tokensAfter":160},{"name":"listing_confirm_usdc","fixed":{"name":"listing_confirm_usdc","description":"The SERVER finds the transfer by reference and reads the treasury's balance change; a short or wrong-token transfer is reported by name and not credited. On success the listing enters review.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session","id"],"properties":{"id":{"type":"string","maxLength":60,"minLength":10},"session":{"type":"string","maxLength":300,"minLength":20,"description":"the session token from agent_session_verify"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Confirm the USDC payment from the chain"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":158,"tokensAfter":158},{"name":"listing_describe","fixed":{"name":"listing_describe","description":"What a listing on Issafu is, what it costs, how it is paid, who publishes it, and every profile field it takes. Read this to the person first.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"How listing on this directory works"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":80,"tokensAfter":80},{"name":"listing_draft","fixed":{"name":"listing_draft","description":"Creates a listing draft on Issafu. Send the fullest profile you can (listing_describe lists the fields); a scam-shaped or off-list field is refused by name. Returns the listing id and status awaiting_payment.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session","name","services","jurisdictions","termsVersion","termsAccepted","authorised"],"properties":{"name":{"type":"string","maxLength":120,"minLength":1},"about":{"type":"string","maxLength":1200},"profile":{"type":"object","additionalProperties":{}},"session":{"type":"string","maxLength":300,"minLength":20,"description":"the session token from agent_session_verify"},"website":{"type":"string","maxLength":200},"register":{"type":"object","required":["scheme","value"],"properties":{"value":{"type":"string"},"scheme":{"type":"string"}},"additionalProperties":false},"services":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}]},"languages":{"type":"string","maxLength":200},"authorised":{"type":"boolean"},"enquiryEmail":{"type":"string","maxLength":160},"termsVersion":{"type":"string","minLength":1},"jurisdictions":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"string"}],"description":"ISO codes"},"termsAccepted":{"type":"boolean"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Draft a listing (validated against the terms before any money)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":377,"tokensAfter":377},{"name":"listing_pay_card","fixed":{"name":"listing_pay_card","description":"Returns a Stripe Checkout URL at the site's price. A human completes it in a browser; the site learns of payment from Stripe's verified event, never from the browser.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session","id"],"properties":{"id":{"type":"string","maxLength":60,"minLength":10},"session":{"type":"string","maxLength":300,"minLength":20,"description":"the session token from agent_session_verify"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Pay by card (hosted checkout for a human)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":150,"tokensAfter":150},{"name":"listing_pay_stripe","fixed":{"name":"listing_pay_stripe","description":"Send a Stripe payment method id (pm_...) the agent is entitled to use; the server charges the SITE's price off-session. Answers succeeded (the listing enters review) or requires_action (use listing_pay_card for a human); never charges an amount you name.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session","id","paymentMethod"],"properties":{"id":{"type":"string","maxLength":60,"minLength":10},"session":{"type":"string","maxLength":300,"minLength":20,"description":"the session token from agent_session_verify"},"paymentMethod":{"type":"string","pattern":"^pm_[A-Za-z0-9]+$"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Pay by Stripe without a browser (a payment method you hold)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":197,"tokensAfter":197},{"name":"listing_pay_usdc","fixed":{"name":"listing_pay_usdc","description":"Returns the Solana Pay transfer request: recipient, exact amount, USDC mint and a unique reference. Pay it from the wallet (include the reference as a read-only key), then call listing_confirm_usdc.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session","id"],"properties":{"id":{"type":"string","maxLength":60,"minLength":10},"session":{"type":"string","maxLength":300,"minLength":20,"description":"the session token from agent_session_verify"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Pay in USDC on Solana (automatic)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":159,"tokensAfter":159},{"name":"listing_status","fixed":{"name":"listing_status","description":"Every listing of this account with its status (awaiting_payment, pending_review, published, refused, withdrawn, expired).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session"],"properties":{"session":{"type":"string","maxLength":300,"minLength":20,"description":"the session token from agent_session_verify"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"My listings"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":121,"tokensAfter":121},{"name":"listing_terms","fixed":{"name":"listing_terms","description":"The clauses a listing is judged by, their version (send it back as termsVersion), and every profile field the directory takes.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true},"title":"The listing terms and the profile allowlist"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":75,"tokensAfter":75},{"name":"listing_withdraw","fixed":{"name":"listing_withdraw","description":"Takes down a listing of this account.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session","id"],"properties":{"id":{"type":"string","maxLength":60,"minLength":10},"session":{"type":"string","maxLength":300,"minLength":20,"description":"the session token from agent_session_verify"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Withdraw a listing"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":114,"tokensAfter":114},{"name":"listings_published","fixed":{"name":"listings_published","description":"What firms have added on top of the register (published rows only), optionally for one register entry.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"value":{"type":"string","maxLength":120},"scheme":{"type":"string","maxLength":40}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Published listings"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":100,"tokensAfter":100},{"name":"submit_enquiry","fixed":{"name":"submit_enquiry","description":"Submits an enquiry to Issafu — NOT a purchase, NOT a guaranteed quote. Step 1: call with the answers (keyed by field key from enquiry_fields) and consent=true; it validates and returns a summary, the consent line and a confirmation token — show the person the summary and the consent line. Step 2: only if the person agrees, call again with the same answers, consent=true and the confirmation token; the enquiry is then submitted, and the person receives an email with a link they must click before a","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["answers","consent"],"properties":{"answers":{"type":"object","description":"the person's answers, keyed by field key","additionalProperties":{"type":["string","number","boolean"]}},"consent":{"type":"boolean","description":"true only when the person has agreed to: By submitting you agree Issafu shares these details with the regulated firms you asked to hear from."},"confirmation":{"type":"string","description":"the confirmation token from step 1, after the person has approved the summary"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Submit an ENQUIRY to human providers (two steps; not a purchase)"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":324,"tokensAfter":324}],"toolsChanged":23,"tokensSaved":0,"todo":[{"tool":"agent_session_start","params":["address"]},{"tool":"agent_session_verify","params":["address","message","signature"]},{"tool":"claim_public","params":["value","scheme"]},{"tool":"claim_start","params":["value","scheme"]},{"tool":"claim_verify","params":["id"]},{"tool":"dataset_compare","params":["column","values"]},{"tool":"dataset_row","params":["value","column"]},{"tool":"dataset_search","params":["limit"]},{"tool":"dataset_stats","params":["column"]},{"tool":"dataset_top","params":["limit","column"]},{"tool":"entities_export","params":["page","pageSize"]},{"tool":"entities_in","params":["page","region","service","pageSize"]},{"tool":"entities_search","params":["q","limit","region","service"]},{"tool":"entity_lookup","params":["slug","value"]},{"tool":"listing_confirm_usdc","params":["id"]},{"tool":"listing_draft","params":["name","about","profile","website","register","services","languages","authorised","enquiryEmail","termsVersion","termsAccepted"]},{"tool":"listing_pay_card","params":["id"]},{"tool":"listing_pay_stripe","params":["id","paymentMethod"]},{"tool":"listing_pay_usdc","params":["id"]},{"tool":"listing_withdraw","params":["id"]},{"tool":"listings_published","params":["value","scheme"]},{"tool":"placements_active","params":["leaf","page","region"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}