{"items":[{"slug":"insurance-assistant","semantic_version":"1.0.0","name":"Insurance Assistant","outcome":"Answer insurance-methodology questions from a published corpus with sources.","description":"A source-grounded assistant for insurance methodology across supported European markets.","provider":"emable","status":"live","exposure":"public","countries":["EU"],"data_class":"derived","access":"read","permissions":["account:read","insurance:ask"],"pricing":{"model":"per_query","charging_unit":"One limited corpus question","currency":"credits","live_credits":0,"trial_credits":0,"hard_cost_limit_credits":0,"provider_cost_credits":0},"trial":{"enabled":true,"max_runs":3,"requires_login":true,"requires_card":false,"sandbox_only":false,"restrictions":["Published corpus only","No document upload"]},"input_schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":1500,"description":"The insurance-methodology question."},"country":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$","description":"ISO-2 market code, e.g. CZ, ES."},"product_line":{"type":"string","maxLength":80,"description":"Product line to scope the answer to."},"language":{"type":"string","maxLength":20,"description":"Preferred answer language."}},"required":["question","country"],"additionalProperties":false},"output_schema":{"type":"object","properties":{"answer":{"type":"string"},"sources":{"type":"array","items":{"type":"object"}},"trust_state":{"type":"string"},"confidence":{"type":"number"}},"required":["answer","sources","trust_state"],"additionalProperties":false},"tools":[{"name":"ask_insurance","title":"Ask insurance methodology","access":"read","summary":"Answers one question against the published insurance corpus.","returns":"A qualified answer, trust state and source list.","input_schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":1500,"description":"The insurance-methodology question."},"country":{"type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$","description":"ISO-2 market code, e.g. CZ, ES."},"product_line":{"type":"string","maxLength":80,"description":"Product line to scope the answer to."},"language":{"type":"string","maxLength":20,"description":"Preferred answer language."}},"required":["question","country"],"additionalProperties":false},"agent_description":"Answers one insurance-methodology question from Emable's published European insurance corpus: coverage terms, IPID content, underwriting rules, and product-sheet detail, with citations back to the source document. Scope with an ISO-2 country code; add product_line to narrow to one line of business. Returns a trust_state alongside the answer, so a caller can tell a well-grounded answer from a thin one before repeating it to a user.","human_summary":"Ask one insurance-methodology question against Emable's published European corpus so you can answer with citations instead of a guess.","use_when":["The user asks a specific coverage, exclusion, underwriting, or pricing question for a market the corpus covers.","The answer needs to cite the actual carrier document, not a paraphrase.","You want an explicit trust signal before repeating the claim downstream."],"do_not_use_when":["The market or product line has no verified corpus coverage — check https://api.emable.ai/v1/insurance/catalog first.","The user needs binding legal or regulatory advice, not methodology guidance."],"examples":[{"title":"Ask about a Czech travel-assistance exclusion","input":{"question":"What does the assistance annex exclude for winter sports?","country":"CZ","product_line":"travel"},"output_excerpt":"{\"answer\": \"...\", \"trust_state\": \"grounded\", \"sources\": [{\"document_class\": \"assistance\", \"carrier\": \"...\"}]}"}],"errors":[{"code":"invalid_api_key","meaning":"The credential is absent, invalid, expired, or revoked.","caller_action":"Stop and reconnect with a valid key or OAuth grant."},{"code":"missing_scope","meaning":"The identity lacks the `insurance:ask` scope this tool requires.","caller_action":"Request `insurance:ask` and reconnect."},{"code":"422","meaning":"Input does not match this tool's schema.","caller_action":"Correct the input using the schema returned with this tool."},{"code":"capability_runs_disabled","meaning":"Execution is temporarily off for this capability.","caller_action":"Keep discovery available and retry later; this is not a permanent failure."}],"latency":null,"related":[]}],"connectors":["emable-finance","insurance-assistant"],"sources":["Published insurer documents indexed in the Emable European insurance corpus."],"limitations":["Answers only markets and product lines with verified corpus coverage.","Does not replace regulated professional advice."],"dependencies":[],"evidence_freshness":"Corpus catalogue and source metadata are read at request time.","supported_execution_surfaces":["specialist_web","rest"],"documentation_url":"https://docs.emable.ai/capabilities/insurance-assistant","support_url":"mailto:support@emable.ai","changelog_url":"/developers","try_url":"/app/capabilities/insurance-assistant","runnable":false},{"slug":"market-validator","semantic_version":"1.0.0","name":"Market Validator","outcome":"Validate a business decision against a bounded synthetic audience.","description":"Runs the existing Validator workflow with an explicit audience and a bounded persona count.","provider":"emable","status":"live","exposure":"public","countries":["EU"],"data_class":"derived","access":"write","permissions":["account:read","validator:run"],"pricing":{"model":"per_run","charging_unit":"One run over 10 personas","currency":"credits","live_credits":500,"trial_credits":0,"hard_cost_limit_credits":500,"provider_cost_credits":0},"trial":{"enabled":true,"max_runs":1,"requires_login":true,"requires_card":false,"sandbox_only":false,"restrictions":["Exactly 10 personas","No raw-persona export"]},"input_schema":{"type":"object","properties":{"hypothesis":{"type":"string","minLength":10,"maxLength":2000},"market":{"type":"string","minLength":2,"maxLength":120},"audience_id":{"type":"string","format":"uuid"}},"required":["hypothesis","market"],"additionalProperties":false},"output_schema":{"type":"object","properties":{"status":{"type":"string"},"verdict":{"type":"string"},"confidence":{"type":"number"},"result_reference":{"type":"string"}},"required":["status","result_reference"],"additionalProperties":false},"tools":[{"name":"list_audiences","title":"List audiences","access":"read","summary":"Lists the saved audiences available to validate against.","returns":"Audience id, name and persona count for each.","input_schema":{"type":"object","properties":{},"required":[]},"agent_description":"Lists all saved audiences available for validation. Call this first to find the audience_id before running a validation. Returns id, name, and persona count for each audience.","human_summary":"List your saved audiences so you can find the one to validate against.","use_when":["You need an audience_id for run_validation or get_audience_details but do not have one yet.","The user asks what audiences already exist."],"do_not_use_when":[],"examples":[],"errors":[{"code":"invalid_api_key","meaning":"The credential is absent, invalid, expired, or revoked.","caller_action":"Stop and reconnect with a valid key or OAuth grant."},{"code":"missing_scope","meaning":"The identity lacks the `validator:read` scope this tool requires.","caller_action":"Request `validator:read` and reconnect."},{"code":"422","meaning":"Input does not match this tool's schema.","caller_action":"Correct the input using the schema returned with this tool."},{"code":"capability_runs_disabled","meaning":"Execution is temporarily off for this capability.","caller_action":"Keep discovery available and retry later; this is not a permanent failure."}],"latency":null,"related":["get_audience_details","create_audience"]},{"name":"get_audience_details","title":"Get audience details","access":"read","summary":"Returns one audience in full: description, source, and a preview of its personas.","returns":"Audience profile plus up to 10 personas with age, role and bio.","input_schema":{"type":"object","properties":{"audience_id":{"type":"string","description":"UUID of the audience. Get this from list_audiences."}},"required":["audience_id"]},"agent_description":"Returns the full profile of a saved audience: name, description, source, and a preview of its personas (up to 10) with age, role, and a short bio. Use this before execution to confirm you are targeting the right people, or when the user asks 'who is in this audience?'","human_summary":"Inspect one saved audience's personas so you can confirm it targets the right people before spending credits on a run.","use_when":["You are about to call run_validation and want to confirm the audience matches the hypothesis first.","The user asks who is actually in a given audience."],"do_not_use_when":[],"examples":[],"errors":[{"code":"invalid_api_key","meaning":"The credential is absent, invalid, expired, or revoked.","caller_action":"Stop and reconnect with a valid key or OAuth grant."},{"code":"missing_scope","meaning":"The identity lacks the `validator:read` scope this tool requires.","caller_action":"Request `validator:read` and reconnect."},{"code":"422","meaning":"Input does not match this tool's schema.","caller_action":"Correct the input using the schema returned with this tool."},{"code":"capability_runs_disabled","meaning":"Execution is temporarily off for this capability.","caller_action":"Keep discovery available and retry later; this is not a permanent failure."}],"latency":null,"related":["list_audiences","run_validation"]},{"name":"list_validations","title":"List validation runs","access":"read","summary":"Returns recent validation runs with their verdicts.","returns":"Verdict, decision size, date and dashboard link per run.","input_schema":{"type":"object","properties":{"limit":{"type":"number","description":"How many recent validations to return (1–50). Defaults to 10."}},"required":[]},"agent_description":"Returns your recent validation runs with their verdict (GO/NO-GO/CONDITIONAL), decision size, date, and a dashboard link for each. Use this to browse history, pick up a result from a previous run, or check whether a similar hypothesis has already been validated.","human_summary":"Browse recent validation runs so you can avoid re-running a hypothesis someone already validated.","use_when":["The user asks about past results before starting a new validation.","You want to check whether a similar hypothesis was already tested."],"do_not_use_when":[],"examples":[],"errors":[{"code":"invalid_api_key","meaning":"The credential is absent, invalid, expired, or revoked.","caller_action":"Stop and reconnect with a valid key or OAuth grant."},{"code":"missing_scope","meaning":"The identity lacks the `validator:read` scope this tool requires.","caller_action":"Request `validator:read` and reconnect."},{"code":"422","meaning":"Input does not match this tool's schema.","caller_action":"Correct the input using the schema returned with this tool."},{"code":"capability_runs_disabled","meaning":"Execution is temporarily off for this capability.","caller_action":"Keep discovery available and retry later; this is not a permanent failure."}],"latency":null,"related":["get_result"]},{"name":"get_result","title":"Get validation result","access":"read","summary":"Polls a run and returns the verdict once it has completed.","returns":"GO/NO-GO/CONDITIONAL verdict, confidence score, summary and a dashboard link.","input_schema":{"type":"object","properties":{"simulation_id":{"type":"string","description":"The simulation_id returned by run_validation"}},"required":["simulation_id"]},"agent_description":"Polls the status of a running validation. When completed, returns GO/NO-GO verdict, confidence score, a one-sentence summary, and a dashboard link. Call every ~15 seconds until status is 'completed'. If status stays 'running' for more than 5 minutes, start a new run rather than continuing to poll.","human_summary":"Poll a validation run so you can return its GO/NO-GO verdict the moment it finishes.","use_when":["You just called run_validation and are waiting for its simulation_id to complete."],"do_not_use_when":[],"examples":[],"errors":[{"code":"invalid_api_key","meaning":"The credential is absent, invalid, expired, or revoked.","caller_action":"Stop and reconnect with a valid key or OAuth grant."},{"code":"missing_scope","meaning":"The identity lacks the `validator:read` scope this tool requires.","caller_action":"Request `validator:read` and reconnect."},{"code":"422","meaning":"Input does not match this tool's schema.","caller_action":"Correct the input using the schema returned with this tool."},{"code":"capability_runs_disabled","meaning":"Execution is temporarily off for this capability.","caller_action":"Keep discovery available and retry later; this is not a permanent failure."}],"latency":"Polls immediately; the underlying run itself takes 2 to 3 minutes.","related":["run_validation"]},{"name":"create_audience","title":"Create audience","access":"write","summary":"Creates a reusable audience. Its market decides which advisor population the personas are calibrated on.","returns":"The new audience id.","input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Short display name, e.g. 'Spanish insurance advisors'."},"description":{"type":"string","description":"Who these people are — role, demographics, context. More specific = better personas."},"market":{"type":"string","description":"Country or market, e.g. 'Spain' — enables calibration on that market's real advisor data."},"size":{"type":"number","description":"How many personas the validation should generate (5–50, default 10)."}},"required":["description","name"]},"agent_description":"Creates a reusable audience from a plain-language description. Use it when no saved audience matches who you want to validate against. Examples: 'Spanish insurance advisors registered with DGSFP', 'Czech insurance branch managers aged 40-55 running teams of 5-15 advisors'. Always pass the market when you know it: that is what makes the validation calibrate its personas on that market's real advisor population instead of guessing. Returns an audience_id for run_validation. Creation is instant; the personas are generated when the validation runs.","human_summary":"Create a reusable audience from a plain-language description so you can validate against a real, calibrated population instead of an ad-hoc guess.","use_when":["No saved audience from list_audiences matches the target group.","The market is known and specific — pass it, so personas calibrate on real advisor data rather than a generic default."],"do_not_use_when":["A close-enough audience already exists — reuse it with list_audiences instead of fragmenting history across near-duplicate audiences."],"examples":[{"title":"Create a market-specific audience","input":{"name":"Spanish insurance advisors","description":"Independent insurance advisors registered with DGSFP, serving mass-affluent retail clients.","market":"Spain"},"output_excerpt":"{\"audience_id\": \"...\"}"}],"errors":[{"code":"invalid_api_key","meaning":"The credential is absent, invalid, expired, or revoked.","caller_action":"Stop and reconnect with a valid key or OAuth grant."},{"code":"missing_scope","meaning":"The identity lacks the `validator:run` scope this tool requires.","caller_action":"Request `validator:run` and reconnect."},{"code":"422","meaning":"Input does not match this tool's schema.","caller_action":"Correct the input using the schema returned with this tool."},{"code":"capability_runs_disabled","meaning":"Execution is temporarily off for this capability.","caller_action":"Keep discovery available and retry later; this is not a permanent failure."}],"latency":null,"related":["list_audiences","run_validation"]},{"name":"run_validation","title":"Run a validation","access":"write","summary":"Runs a hypothesis against an audience: personas, survey, simulation, statistics, verdict. Takes 2-3 minutes.","returns":"A simulation id to poll with get_result.","input_schema":{"type":"object","properties":{"hypothesis":{"type":"string","description":"The business decision or hypothesis to validate. Be specific — e.g. 'Should we launch a 990 Kč/mo premium tier targeting Raynet power users?'"},"audience_id":{"type":"string","description":"UUID of the audience to validate against. Get this from list_audiences."},"market":{"type":"string","description":"Country/market of the audience (e.g. 'Spain'), so personas are calibrated on that market's real advisor population."},"decision_size":{"type":"string","enum":["S","M","L","XL"],"description":"Stakes of this decision. S = quick experiment, M = standard (default), L = significant investment, XL = company-defining bet."}},"required":["hypothesis","audience_id"]},"agent_description":"Starts a Validator run for a hypothesis against a saved audience. Returns simulation_id immediately; the actual run (personas, survey, simulation, statistics, verdict) takes 2 to 3 minutes in the background. Use get_result to poll for the GO/NO-GO verdict. Get audience_id from list_audiences first. Optionally set decision_size (S/M/L/XL) to indicate the stakes; larger sizes trigger deeper analysis.","human_summary":"Validate a business hypothesis against a bounded synthetic audience so you can get a GO/NO-GO verdict before committing real budget.","use_when":["The hypothesis, audience, market, and decision size are all confirmed with the user.","The user has approved the credit spend for a run at this decision_size."],"do_not_use_when":["No audience_id is confirmed — call list_audiences or create_audience first."],"examples":[{"title":"Validate a pricing decision","input":{"hypothesis":"Should we launch a 990 Kč/mo premium tier targeting Raynet power users?","audience_id":"...","decision_size":"M"},"output_excerpt":"{\"simulation_id\": \"...\"}"}],"errors":[{"code":"invalid_api_key","meaning":"The credential is absent, invalid, expired, or revoked.","caller_action":"Stop and reconnect with a valid key or OAuth grant."},{"code":"missing_scope","meaning":"The identity lacks the `validator:run` scope this tool requires.","caller_action":"Request `validator:run` and reconnect."},{"code":"422","meaning":"Input does not match this tool's schema.","caller_action":"Correct the input using the schema returned with this tool."},{"code":"capability_runs_disabled","meaning":"Execution is temporarily off for this capability.","caller_action":"Keep discovery available and retry later; this is not a permanent failure."}],"latency":"2 to 3 minutes; poll with get_result roughly every 15 seconds.","related":["get_result","list_audiences"]}],"connectors":["emable-finance","validator"],"sources":["The customer-selected Emable audience and Validator synthetic personas."],"limitations":["Trial runs are limited to 10 personas.","Synthetic-persona evidence is directional, not observed customer behavior."],"dependencies":["A configured audience and Validator execution entitlement"],"evidence_freshness":"Audience and source snapshots are recorded with each Validator run.","supported_execution_surfaces":["specialist_web","mcp"],"documentation_url":"https://docs.emable.ai/capabilities/market-validator","support_url":"mailto:support@emable.ai","changelog_url":"/developers","try_url":"/validator/workspace","runnable":false},{"slug":"afa-assurance","semantic_version":"1.0.0","name":"AFA Assurance","outcome":"Check an answer against the AFA legislation and ethics assurance matrix.","description":"A retrieval-and-judge assurance pass for one financial-advice answer.","provider":"emable","status":"pilot","exposure":"public","countries":["CZ"],"data_class":"derived","access":"read","permissions":["account:read","afa:validate"],"pricing":{"model":"included","charging_unit":"One answer check within the account quota","currency":"credits","live_credits":0,"trial_credits":0,"hard_cost_limit_credits":0,"provider_cost_credits":0},"trial":{"enabled":true,"max_runs":1,"requires_login":true,"requires_card":false,"sandbox_only":false,"restrictions":[]},"input_schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":5000,"description":"The client question the answer responds to."},"answer":{"type":"string","minLength":1,"maxLength":20000,"description":"The AI or advisor answer to judge."},"check":{"type":"string","enum":["legislation","ethics","full"],"description":"Which assurance matrix to judge against."}},"required":["question","answer","check"],"additionalProperties":false},"output_schema":{"type":"object","properties":{"status":{"type":"string"},"findings":{"type":"array","items":{"type":"object"}},"sources":{"type":"array","items":{"type":"object"}}},"required":["status","findings"],"additionalProperties":false},"tools":[{"name":"validate_answer","title":"Validate answer","access":"read","summary":"Checks one answer against the selected AFA assurance matrix.","returns":"A status plus grounded findings.","input_schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":5000,"description":"The client question the answer responds to."},"answer":{"type":"string","minLength":1,"maxLength":20000,"description":"The AI or advisor answer to judge."},"check":{"type":"string","enum":["legislation","ethics","full"],"description":"Which assurance matrix to judge against."}},"required":["question","answer","check"],"additionalProperties":false},"agent_description":"Checks one already-written financial-advice answer against the configured AFA legislation-and-ethics assurance matrix and returns a status plus grounded findings citing the matrix. Set check to 'legislation' for a regulatory-citation pass, 'ethics' for the ethics matrix, or 'full' for both. This tool judges an answer someone else already wrote; it does not draft one.","human_summary":"Check a financial-advice answer against the AFA legislation and ethics matrix so you can catch a gap before the answer reaches a client.","use_when":["An advisor-facing answer already exists and needs a compliance-style grounding pass before it is shown or repeated.","The user asks whether an answer holds up against legislation, ethics, or both."],"do_not_use_when":["No answer exists yet — this tool judges an existing answer, it does not generate one.","The check needs to span a market outside the assurance matrix currently configured for the Czech market."],"examples":[{"title":"Check an answer against both matrices","input":{"question":"Can I recommend this structured product to a retail client with no prior investment experience?","answer":"Yes, as long as the product's risk category is disclosed.","check":"full"},"output_excerpt":"{\"status\": \"flagged\", \"findings\": [{\"matrix\": \"ethics\", \"citation\": \"...\"}]}"}],"errors":[{"code":"invalid_api_key","meaning":"The credential is absent, invalid, expired, or revoked.","caller_action":"Stop and reconnect with a valid key or OAuth grant."},{"code":"missing_scope","meaning":"The identity lacks the `afa:validate` scope this tool requires.","caller_action":"Request `afa:validate` and reconnect."},{"code":"422","meaning":"Input does not match this tool's schema.","caller_action":"Correct the input using the schema returned with this tool."},{"code":"capability_runs_disabled","meaning":"Execution is temporarily off for this capability.","caller_action":"Keep discovery available and retry later; this is not a permanent failure."}],"latency":null,"related":[]}],"connectors":["emable-finance","afa-assurance"],"sources":["The legislation and ethics assurance matrix configured in the AFA validator."],"limitations":["Coverage is limited to the configured Czech assurance matrix.","A passing check does not constitute legal advice or regulatory approval."],"dependencies":["Configured AFA legislation and ethics assurance matrix"],"evidence_freshness":"The response cites the assurance sources used by the configured matrix.","supported_execution_surfaces":["specialist_web","rest"],"documentation_url":"https://docs.emable.ai/capabilities/afa-assurance","support_url":"mailto:support@emable.ai","changelog_url":"/developers","try_url":"/certification/workspace","runnable":false},{"slug":"exa-filter","semantic_version":"1.0.0","name":"EXA Answer Filter","outcome":"Judge a written insurance answer against insurer documents and return a trust verdict.","description":"A grounding check for one already-written answer: how well it is supported by the insurer documents behind it, and whether it should be shown at all.","provider":"emable","status":"pilot","exposure":"public","countries":["CZ","SK"],"data_class":"derived","access":"read","permissions":["account:read","exa:validate"],"pricing":{"model":"included","charging_unit":"One answer judged within the account quota","currency":"credits","live_credits":0,"trial_credits":0,"hard_cost_limit_credits":0,"provider_cost_credits":0},"trial":{"enabled":true,"max_runs":1,"requires_login":true,"requires_card":false,"sandbox_only":false,"restrictions":[]},"input_schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":5000},"answer":{"type":"string","minLength":1,"maxLength":20000},"insurer":{"type":"string","maxLength":120},"sources":{"type":"array","items":{"type":"string","maxLength":2000},"maxItems":50},"country":{"type":"string","enum":["CZ","SK"]},"insurance_type":{"type":"string","maxLength":60}},"required":["question","answer"],"additionalProperties":false},"output_schema":{"type":"object","properties":{"trust_state":{"type":"string","enum":["OK","WARN","FAIL"]},"faithfulness_score":{"type":"number"},"confidence_score":{"type":"number"},"verdict_text":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}}},"required":["trust_state"],"additionalProperties":false},"tools":[{"name":"check_answer","title":"Check answer","access":"read","summary":"Judges one written answer against the insurer documents it claims to rest on. Does not answer questions itself.","returns":"A trust state (OK, WARN or FAIL) with faithfulness and confidence scores.","input_schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":5000},"answer":{"type":"string","minLength":1,"maxLength":20000},"insurer":{"type":"string","maxLength":120},"sources":{"type":"array","items":{"type":"string","maxLength":2000},"maxItems":50},"country":{"type":"string","enum":["CZ","SK"]},"insurance_type":{"type":"string","maxLength":60}},"required":["question","answer"],"additionalProperties":false},"agent_description":null,"human_summary":null,"use_when":[],"do_not_use_when":[],"examples":[],"errors":[],"latency":null,"related":[]}],"connectors":["emable-finance","exa-filter"],"sources":["The insurer product documents indexed by the EXA methodology assistant."],"limitations":["A filter, not an assistant: it never generates an answer, only judges one.","Coverage follows the indexed insurer corpus, today Czech and Slovak insurers.","A passing verdict is a grounding signal, not compliance approval. For a MiFID-style compliance verdict use afa__validate_answer."],"dependencies":["The EXA methodology gateway and its insurer document index"],"evidence_freshness":"The verdict reflects the insurer documents indexed at the time of the call.","supported_execution_surfaces":["specialist_web","rest"],"documentation_url":"/developers","support_url":"mailto:support@emable.ai","changelog_url":"/developers","try_url":"/certification/workspace","runnable":false},{"slug":"eu-market-data","semantic_version":"1.0.0","name":"EU Market Data","outcome":"Answer aggregate questions about European financial-services markets.","description":"Aggregate-only access to European advisor and firm market intelligence.","provider":"emable","status":"live","exposure":"public","countries":["EU"],"data_class":"aggregate","access":"read","permissions":["account:read","eu-data:aggregate"],"pricing":{"model":"included","charging_unit":"One aggregate query within the BI entitlement","currency":"credits","live_credits":0,"trial_credits":0,"hard_cost_limit_credits":0,"provider_cost_credits":0},"trial":{"enabled":true,"max_runs":3,"requires_login":true,"requires_card":false,"sandbox_only":false,"restrictions":["Aggregate results only","No named-record export"]},"input_schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":1000,"description":"The aggregate market question being answered."},"countries":{"type":"array","items":{"type":"string","minLength":2,"maxLength":2},"minItems":1,"maxItems":10,"description":"ISO-2 codes of the markets the question is about."}},"required":["question","countries"],"additionalProperties":false},"output_schema":{"type":"object","properties":{"summary":{"type":"string"},"aggregates":{"type":"object"},"sources":{"type":"array","items":{"type":"object"}}},"required":["summary","aggregates"],"additionalProperties":false},"tools":[{"name":"query_eu_market","title":"Query EU market","access":"read","summary":"Answers one aggregate question across selected EU markets.","returns":"Aggregate metrics, summary and source coverage.","input_schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":1000,"description":"The aggregate market question being answered."},"countries":{"type":"array","items":{"type":"string","minLength":2,"maxLength":2},"minItems":1,"maxItems":10,"description":"ISO-2 codes of the markets the question is about."}},"required":["question","countries"],"additionalProperties":false},"agent_description":"Answers one free-form aggregate question about European financial-services markets across the countries you list, e.g. 'how does advisor density in Germany compare to France?'. Use this when the question does not map neatly onto eu_coverage, eu_market_overview, or eu_compare_markets; use one of those three structured tools instead when it does, since they return more predictable, better-typed results for exactly that shape of question.","human_summary":"Ask a free-form aggregate question across selected EU markets so you can get a sourced answer without knowing the exact structured tool for it.","use_when":["The question spans multiple countries or metrics in a way that does not fit eu_coverage, eu_market_overview, or eu_compare_markets."],"do_not_use_when":["You only need one country's structure — call eu_market_overview directly for a more predictable result.","You are comparing named markets — call eu_compare_markets directly."],"examples":[],"errors":[{"code":"invalid_api_key","meaning":"The credential is absent, invalid, expired, or revoked.","caller_action":"Stop and reconnect with a valid key or OAuth grant."},{"code":"missing_scope","meaning":"The identity lacks the `eu-data:aggregate` scope this tool requires.","caller_action":"Request `eu-data:aggregate` and reconnect."},{"code":"422","meaning":"Input does not match this tool's schema.","caller_action":"Correct the input using the schema returned with this tool."},{"code":"capability_runs_disabled","meaning":"Execution is temporarily off for this capability.","caller_action":"Keep discovery available and retry later; this is not a permanent failure."}],"latency":null,"related":["eu_coverage","eu_market_overview","eu_compare_markets"]},{"name":"eu_coverage","title":"EU data coverage","access":"read","summary":"Reports what advisor data emable holds: totals, covered markets and which data layers are populated.","returns":"Total advisors, market count and per-market headcount, aggregates only.","input_schema":{"type":"object","properties":{},"required":[]},"agent_description":"What advisor data emable actually holds: total advisors, how many are active, how many European markets are covered, headcount per market ranked, and which data layers are populated on this deployment. Call this first when you do not know whether a country is covered, or when someone asks how big the dataset is. Aggregates only.","human_summary":"Check what advisor data emable actually holds so you can tell whether a country or metric is covered before asking about it.","use_when":["You do not know whether a given country has coverage yet.","The user asks how large or complete the underlying dataset is."],"do_not_use_when":[],"examples":[],"errors":[{"code":"invalid_api_key","meaning":"The credential is absent, invalid, expired, or revoked.","caller_action":"Stop and reconnect with a valid key or OAuth grant."},{"code":"missing_scope","meaning":"The identity lacks the `eu-data:aggregate` scope this tool requires.","caller_action":"Request `eu-data:aggregate` and reconnect."},{"code":"422","meaning":"Input does not match this tool's schema.","caller_action":"Correct the input using the schema returned with this tool."},{"code":"capability_runs_disabled","meaning":"Execution is temporarily off for this capability.","caller_action":"Keep discovery available and retry later; this is not a permanent failure."}],"latency":null,"related":["eu_market_overview","eu_compare_markets"]},{"name":"eu_market_overview","title":"EU market overview","access":"read","summary":"Returns the advisor-market structure of one European country from national-register data.","returns":"Registry and active counts, licence mix, average age, advisors per 100k inhabitants and EU share.","input_schema":{"type":"object","properties":{"country":{"type":"string","description":"ISO-2 country code, e.g. ES for Spain, IT for Italy, CZ for Czechia."}},"required":["country"]},"agent_description":"Real market structure for financial advisors in one European country, straight from the national-register data emable maintains: how many advisors are on the register, how many are active, how they split across insurance/investment/loans/pension licences, their average age, advisors per 100k inhabitants, and the country's share of the European total. Use this before building an audience or validating anything about a market, so personas and verdicts stand on the real population instead of a guess. Aggregates only, never an individual.","human_summary":"Get one country's real advisor-market structure so you can ground an audience or a claim about that market in registry data.","use_when":["You are about to create a Validator audience for a market and want it calibrated on the real population first.","The user makes a claim about one market's advisor population that should be checked against the register."],"do_not_use_when":[],"examples":[],"errors":[{"code":"invalid_api_key","meaning":"The credential is absent, invalid, expired, or revoked.","caller_action":"Stop and reconnect with a valid key or OAuth grant."},{"code":"missing_scope","meaning":"The identity lacks the `eu-data:aggregate` scope this tool requires.","caller_action":"Request `eu-data:aggregate` and reconnect."},{"code":"422","meaning":"Input does not match this tool's schema.","caller_action":"Correct the input using the schema returned with this tool."},{"code":"capability_runs_disabled","meaning":"Execution is temporarily off for this capability.","caller_action":"Keep discovery available and retry later; this is not a permanent failure."}],"latency":null,"related":["eu_coverage","eu_compare_markets"]},{"name":"eu_compare_markets","title":"Compare EU markets","access":"read","summary":"Puts several European advisor markets side by side, sorted by size.","returns":"Headcount, advisors per 100k, average age and licence mix per market, aggregates only.","input_schema":{"type":"object","properties":{"countries":{"type":"array","items":{"type":"string"},"description":"Two to twelve ISO-2 codes, e.g. ['ES','IT','FR']."}},"required":["countries"]},"agent_description":"Puts several European advisor markets side by side: headcount, advisors per 100k inhabitants, average age, and product-licence mix for each. Use it to decide which market to enter, expand into, or validate a hypothesis against, and to sanity-check a claim like 'Spain is a bigger opportunity than Italy'. Aggregates only.","human_summary":"Compare several European advisor markets side by side so you can decide which one to enter or validate a hypothesis against.","use_when":["The user is choosing between two or more markets to enter or expand into.","A comparative claim about markets needs checking against real data."],"do_not_use_when":[],"examples":[{"title":"Compare three markets before a market-entry decision","input":{"countries":["ES","IT","FR"]},"output_excerpt":"{\"markets\": [{\"country\": \"ES\", \"advisors_per_100k\": ...}, ...]}"}],"errors":[{"code":"invalid_api_key","meaning":"The credential is absent, invalid, expired, or revoked.","caller_action":"Stop and reconnect with a valid key or OAuth grant."},{"code":"missing_scope","meaning":"The identity lacks the `eu-data:aggregate` scope this tool requires.","caller_action":"Request `eu-data:aggregate` and reconnect."},{"code":"422","meaning":"Input does not match this tool's schema.","caller_action":"Correct the input using the schema returned with this tool."},{"code":"capability_runs_disabled","meaning":"Execution is temporarily off for this capability.","caller_action":"Keep discovery available and retry later; this is not a permanent failure."}],"latency":null,"related":["eu_coverage","eu_market_overview"]}],"connectors":["emable-finance","eu-market-data"],"sources":["Emable European advisor and firm datasets exposed through aggregate queries."],"limitations":["Trial results are aggregate-only.","Coverage and refresh dates vary by country and source register."],"dependencies":["Reviewed country coverage in the European adviser dataset"],"evidence_freshness":"Country and source refresh dates are returned with aggregate results.","supported_execution_surfaces":["specialist_web"],"documentation_url":"https://docs.emable.ai/capabilities/eu-market-data","support_url":"mailto:support@emable.ai","changelog_url":"/developers","try_url":"/radar","runnable":false},{"slug":"company-intelligence","semantic_version":"1.0.0","name":"Company Intelligence","outcome":"Analyze a company's public website into a structured market brief.","description":"A bounded analysis of one publicly reachable company URL.","provider":"emable","status":"live","exposure":"public","countries":["GLOBAL"],"data_class":"derived","access":"read","permissions":["account:read","company:analyze"],"pricing":{"model":"included","charging_unit":"One public-URL analysis within the account quota","currency":"credits","live_credits":0,"trial_credits":0,"hard_cost_limit_credits":0,"provider_cost_credits":0},"trial":{"enabled":true,"max_runs":1,"requires_login":true,"requires_card":false,"sandbox_only":false,"restrictions":["Public HTTP or HTTPS URL only"]},"input_schema":{"type":"object","properties":{"company_url":{"type":"string","format":"uri","maxLength":2048,"description":"Absolute public HTTP or HTTPS URL of the company website."}},"required":["company_url"],"additionalProperties":false},"output_schema":{"type":"object","properties":{"company_name":{"type":"string"},"target_audience":{"type":"string"},"products_services":{"type":"array","items":{"type":"string"}},"market":{"type":"string"}},"required":["company_name","target_audience","products_services","market"],"additionalProperties":false},"tools":[{"name":"analyze_company_url","title":"Analyze company URL","access":"read","summary":"Analyzes one public company website.","returns":"A structured company and market brief.","input_schema":{"type":"object","properties":{"company_url":{"type":"string","format":"uri","maxLength":2048,"description":"Absolute public HTTP or HTTPS URL of the company website."}},"required":["company_url"],"additionalProperties":false},"agent_description":"Analyzes one publicly reachable company website into a structured brief: company name, target audience, products and services, and market. Requires an Emable API key carrying the company:analyze and jobs:read scopes; OAuth and personal-token connections cannot run this tool. The analysis runs asynchronously: if it has not finished within about 60 seconds, the response returns status: running and the caller should poll again rather than treat that as a failure.","human_summary":"Turn one company's public website into a structured company-and-market brief so you can qualify it without manual research.","use_when":["The user gives a company URL and needs its products, audience, or market summarized.","The caller holds an Emable API key with company:analyze and jobs:read."],"do_not_use_when":["The connection is OAuth or a personal token rather than an API key — this tool refuses those with an actionable message rather than a silent failure.","The target is not a public HTTP or HTTPS page."],"examples":[{"title":"Analyze a company before a market-entry check","input":{"company_url":"https://example.com"},"output_excerpt":"{\"company_name\": \"...\", \"target_audience\": \"...\", \"products_services\": [\"...\"], \"market\": \"...\"}"}],"errors":[{"code":"invalid_api_key","meaning":"The credential is absent, invalid, expired, or revoked.","caller_action":"Stop and reconnect with a valid key or OAuth grant."},{"code":"missing_scope","meaning":"The identity lacks the `company:analyze` scope this tool requires.","caller_action":"Request `company:analyze` and reconnect."},{"code":"422","meaning":"Input does not match this tool's schema.","caller_action":"Correct the input using the schema returned with this tool."},{"code":"capability_runs_disabled","meaning":"Execution is temporarily off for this capability.","caller_action":"Keep discovery available and retry later; this is not a permanent failure."},{"code":"api_key_required","meaning":"The connection is not an Emable API key with company:analyze and jobs:read.","caller_action":"Reconnect with an API key carrying both scopes; OAuth and personal tokens are not supported for this tool."}],"latency":"Up to 60 seconds; poll again if the response returns status: running.","related":[]}],"connectors":["emable-finance","company-intelligence"],"sources":["Public pages retrieved from the submitted company URL."],"limitations":["Only publicly reachable HTTP or HTTPS pages can be analyzed.","The result reflects available website content, not independently verified facts."],"dependencies":[],"evidence_freshness":"The public website is retrieved for the submitted run.","supported_execution_surfaces":["rest","cli"],"documentation_url":"https://docs.emable.ai/capabilities/company-intelligence","support_url":"mailto:support@emable.ai","changelog_url":"/developers","try_url":"/developers/keys","runnable":false},{"slug":"distribution-intelligence","semantic_version":"1.0.0","name":"Distribution Intelligence","outcome":"Analyze authorized distribution data inside a verified workspace.","description":"A gated pilot for approved alliance workspaces while shared OAuth is completed.","provider":"emable","status":"pilot","exposure":"gated","countries":["CZ"],"data_class":"aggregate","access":"read","permissions":["verified_workspace","distribution:read"],"pricing":{"model":"contract","charging_unit":"One query within the signed workspace contract","currency":"credits","live_credits":0,"trial_credits":0,"hard_cost_limit_credits":0,"provider_cost_credits":0},"trial":{"enabled":false,"max_runs":0,"requires_login":true,"requires_card":false,"sandbox_only":false,"restrictions":[]},"input_schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":1000},"dataset":{"type":"string","minLength":1,"maxLength":80}},"required":["question","dataset"],"additionalProperties":false},"output_schema":{"type":"object","properties":{"summary":{"type":"string"},"aggregates":{"type":"object"},"result_reference":{"type":"string"}},"required":["summary","aggregates"],"additionalProperties":false},"tools":[{"name":"query_distribution","title":"Query distribution data","access":"read","summary":"Queries an allowlisted aggregate distribution dataset.","returns":"A workspace-scoped aggregate result.","input_schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":1000},"dataset":{"type":"string","minLength":1,"maxLength":80}},"required":["question","dataset"],"additionalProperties":false},"agent_description":null,"human_summary":null,"use_when":[],"do_not_use_when":[],"examples":[],"errors":[],"latency":null,"related":[]}],"connectors":["emable-finance","distribution-intelligence"],"sources":["Datasets allowlisted in the signed provider workspace contract."],"limitations":["Access is restricted to verified workspaces.","The pilot remains approval-gated until shared OAuth is complete."],"dependencies":["Signed provider data contract","Verified workspace entitlement"],"evidence_freshness":"Defined by the signed workspace data contract.","supported_execution_surfaces":["mcp"],"documentation_url":"/developers","support_url":"mailto:support@emable.ai","changelog_url":"/developers","try_url":"/app/connections","runnable":false},{"slug":"germany-market-intelligence","semantic_version":"1.0.0","name":"Germany Market Intelligence","outcome":"Access selected Germany financial-distribution market data with traceable evidence.","description":"A paid standard package with the complete aggregate Germany market and non-named distribution profile. Public Eurostat and selected distribution signals remain available on the website. Named institutions, networks, technology profiles and commercial scenarios remain NUDA Enterprise only.","provider":"nuda","status":"pilot","exposure":"gated","countries":["DE"],"data_class":"aggregate","access":"read","permissions":["market-intelligence:read"],"pricing":{"model":"contract","charging_unit":"Included in a paid Germany Market Intelligence entitlement","currency":"credits","live_credits":0,"trial_credits":0,"hard_cost_limit_credits":0,"provider_cost_credits":0},"trial":{"enabled":false,"max_runs":0,"requires_login":true,"requires_card":false,"sandbox_only":false,"restrictions":[]},"input_schema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"output_schema":{"type":"object","properties":{"summary":{"type":"string"},"data":{"type":"object"},"sources":{"type":"array","items":{"type":"object"}}},"required":["summary","data"],"additionalProperties":false},"tools":[{"name":"germany_market_overview","title":"Germany market overview","access":"read","summary":"Returns selected paid market aggregates with explicit evidence quality.","returns":"Germany metrics, source periods and A-D reliability labels.","input_schema":null,"agent_description":null,"human_summary":null,"use_when":[],"do_not_use_when":[],"examples":[],"errors":[],"latency":null,"related":[]}],"connectors":["emable-finance","germany-market-intelligence"],"sources":["NUDA Germany offline market-intelligence package, version 2026-08-27."],"limitations":["No Germany market values are available without a paid entitlement.","Named institutions and full decision layers require NUDA Enterprise.","This capability is read-only and never writes to CRM or a sales pipeline."],"dependencies":["Paid Germany Market Intelligence workspace entitlement"],"evidence_freshness":"Every payload includes package version and checked dates.","supported_execution_surfaces":["specialist_web","mcp"],"documentation_url":"/developers/germany-market-intelligence","support_url":"mailto:support@emable.ai","changelog_url":"/developers","try_url":"/app/market-intelligence/germany","runnable":false}],"filters":{"outcomes":["Access selected Germany financial-distribution market data with traceable evidence.","Analyze a company's public website into a structured market brief.","Analyze authorized distribution data inside a verified workspace.","Answer aggregate questions about European financial-services markets.","Answer insurance-methodology questions from a published corpus with sources.","Check an answer against the AFA legislation and ethics assurance matrix.","Judge a written insurance answer against insurer documents and return a trust verdict.","Validate a business decision against a bounded synthetic audience."],"countries":["CZ","DE","EU","GLOBAL","SK"],"providers":["emable","nuda"],"statuses":["live","pilot"],"access":["read","write"],"pricing_models":["contract","included","per_query","per_run"]}}