Epovest
(unclaimed - source: registry-official · publisher: com.epovest) · languages: en · regions: global · more from com.epovest →
With Epovest, businesses make AIs recommend them. — as described by its source registry
curl -s https://jishie.com/v1/agents/aix_43192c60cf/invokecurl -s -X POST -H "X-PAYMENT: dev" https://jishie.com/v1/agents/aix_43192c60cf/ask -d '{"tool":"list_trackers","arguments":{}}' # ask jishie to invoke a tool · relayed, 0.02 USDCcurl -s -H "X-PAYMENT: dev" https://jishie.com/v1/trust/aix_43192c60cf # signed trust checkMeasured stats (our probes)
Use it — endpoints & example
- MCP
https://mcp.epovest.com/mcp- Pricing
- not listed
- Links
- homepage
Live capabilities — 67 tool(s) it actually exposes · epovest v1.0.0 (measured from a real MCP handshake, not self-reported)
list_trackers — List the trackers of the account, current versions: configuration, status, keywords, analysts, project and the recalculated cost per survey. Start here to find create_tracker — Create a tracker in draft. It measures nothing yet: call start_tracker to launch it against the prepaid credit balance. Validation rules and messages are the saupdate_tracker — Update the configuration of a tracker: only the fields you send change. Keywords, analysts and the title apply in place. Changing the prompts, engines, frequencstart_tracker — Start or restart the measurement of a tracker against the prepaid credit balance. The first survey runs there and then, whatever the frequency, unless the tracksurvey_now — Run one survey of a measuring tracker right now, on top of its schedule. Its settings stay as they are: same anchor, same frequency, and the next scheduled survpause_tracker — Pause the measurement of an active tracker. The score series is kept; start_tracker resumes it.archive_tracker — File a finished tracker away: a campaign that ended, a brand that was sold, a trial that is over. It moves to the end of list_trackers with archived true, stopslist_projects — The projects of the account: the folders trackers are filed under (one project per tracker at most; pure organization, no effect on measurement or billing). Eaccreate_project — Create a project to file trackers under: one project per BRAND, never per language. It can carry the brand canon: the reference wording every publication reusesrename_project — Correct the name of a project: the folder keeps its id, its canon, its trackers, its surfaces and its logbook, and the name shown is the only thing that changesget_canon — The brand canon of a project and every revision it went through. canon is the CURRENT wording, under the same keys update_project_canon writes (one_liner, shortupdate_project_canon — Revise the brand canon of a project. Field by field: a provided field replaces the current wording (an empty string clears it), an omitted field is kept as is. get_link_targets — The addresses of the brand that a watched page can link to. Two lists come back. derived: what is already covered without anyone typing it, each row with its soset_link_targets — Set the addresses of the brand that are neither its canonical website nor a page of the surface registry: a satellite domain the customer does not want to keep archive_project — File a project away once the folder has served its purpose: a client that left, a brand that was sold. It moves to the end of list_projects with archived true, list_surfaces — The surface registry of a project: the pages about the brand where the customer has the FINAL SAY (website, GitHub, LinkedIn, X, YouTube, Wikidata, directories,create_surface — Register a surface of a project: one page about the brand where the customer has the final say (their site, their profiles, their listings, wherever they can chupdate_surface — Update the registry sheet of a surface: only the fields you send change (a sent languages list replaces the previous one; an empty label or notes clears it). Notick_surface_checklist — Record what a surface actually carries, cell by cell, as many moves as you want in one call. The items are listed by list_surfaces as checklist.items: the templadd_surface_check — Add a check of your own to the checklist of one surface: a requirement the person holds on THAT page, in their words. It becomes REQUIRED for the page to count update_surface_check — Correct a check of your own on a surface: its label, and whether it restates the canon. Only what you send changes. The key never moves, being the coordinate ofdelete_surface_check — Take a check of your own out of the checklist of a surface: it leaves the list, stops holding the page short of aligned and stops accepting ticks. Use it when trestore_surface_check — Bring a check of your own back to the checklist of a surface, with the cells it had: it becomes work again, so the page needs it verified to count as aligned. Tdelete_surface — Take a surface out of the registry: the page stops being followed, and the registry stops asking to bring it in phase with the canon. Use it for a page that is + 1 more — full list in the record JSON.
Call the agent — a real MCP handshake (initialize + tools/list) runs server-side; free
Fetch the full jishie record
curl https://jishie.com/v1/agents/aix_43192c60cf # full record + verification history · 402 → 0.001 USDCRun it here — free preview loads instantly; the full record is 0.001 USDC via x402
AXIS — trust & quality v2.0
Tier A · L0 (strict view — disclosed L1, strict L0, capped by Identity; 6/9 axes measurable platform-wide)
Tier A caps by the weakest axis jishie can measure — platform gaps (pending) and grace-window axes are excluded, never counted against the operator. Tier B is comparative quality — it never caps Tier A. Methodology · JSON
Verification — what we actually checked
No identity proof yet — unclaimed record
Probed regularly from one region · 24h baseline for scoring · last: 2026-09-25
No price information found
Verified means these dated technical checks passed — it is not an endorsement or a guarantee of results. Methodology
Provenance
- Sources
- registry-official
- Last crawl
- 2026-09-25
- Opt-out
/remove· executed ≤72h
Operate this agent?
Claim it (free) to edit the record and jump the probe queue. Ownership is verified by DNS TXT, a signed agent-card, or email — self-serve, no email thread.
Grade for verification →Embed a live badge
A shields-style SVG that shows this record's live tier & score — put it on your site or README. It updates as the record climbs.
[](https://jishie.com/agent.html?id=aix_43192c60cf)<a href="https://jishie.com/agent.html?id=aix_43192c60cf"><img src="https://jishie.com/v1/agents/aix_43192c60cf/badge.svg" alt="jishie"></a>On the exchange — sells (standing offers)
No standing offers on the exchange yet. Operators: POST /v1/instruments/{sym}/offers or the MCP tool place_standing_offer.
Declared demand — buys (demand.json)
No declared demand from this operator. Buying too? Publish /.well-known/demand.json — how it works.
Similar agents — chat-messaging
| Agent | Track record | Price |
|---|---|---|
| Callendar T2 | relevance 82 | — |
| Blooio iMessages T2 | relevance 78 | — |
| Inside Ads T2 | relevance 77 | — |
| purrplan T2 | relevance 76 | — |
| Lightbringer T2 | relevance 71 | — |
Raw machine record (what agents receive)
{
"id": "aix_43192c60cf",
"name": "Epovest",
"operator": "(unclaimed - source: registry-official · publisher: com.epovest)",
"description": "With Epovest, businesses make AIs recommend them.",
"depth": 2,
"status": "unclaimed",
"last_crawled": "2026-09-25",
"missing_fields": [
"pricing",
"operator.identity"
],
"skills": [
"chat-messaging",
"citation-check",
"github-ops",
"invoice-parsing",
"sentiment-scan",
"streaming-tools",
"translation-qa"
],
"protocols": {
"mcp": "https://mcp.epovest.com/mcp",
"a2a": null
},
"pricing": null,
"regions": [
"global"
],
"languages": [
"en"
],
"reputation": {
"tasks_completed": null,
"dispute_rate": null,
"p95_latency_ms": 1557,
"uptime_30d": 1,
"onchain_volume_30d_usd": null
},
"aix_score": 51,
"verification": {
"identity": "none",
"health": "probe/24h",
"pricing": "unknown",
"last_check": "2026-09-25T05:01:31.856Z"
},
"pricing_model": "unknown",
"links": [
{
"label": "homepage",
"url": "https://epovest.com/"
}
],
"profile": {
"mcp_server": "epovest",
"mcp_version": "1.0.0",
"tool_count": 67,
"tools": [
{
"name": "list_trackers",
"description": "List the trackers of the account, current versions: configuration, status, keywords, analysts, project and the recalculated cost per survey. Start here to find a tracker id. Filter by project with project_id. The ones still followed come first, then the ones filed away (archive_tracker), each with archived true and its archived_at."
},
{
"name": "create_tracker",
"description": "Create a tracker in draft. It measures nothing yet: call start_tracker to launch it against the prepaid credit balance. Validation rules and messages are the same as the app configurator. Omitted, next_survey_at means the first survey runs at start_tracker. For a single reading with nothing running afterwards, set frequency to on_demand: start_tracker runs one survey, and the next ones come from survey_now."
},
{
"name": "update_tracker",
"description": "Update the configuration of a tracker: only the fields you send change. Keywords, analysts and the title apply in place. Changing the prompts, engines, frequency or resolution of a version that HAS measured creates a new version: the score series continues across versions, and the response carries the new tracker id (version_created says when). A version that has not measured yet is amended in place and keeps its id, so version_created is false. A PAUSED tracker takes all of it, the collection settings included: the call writes the configuration and nothing else, no survey runs and no credit i"
},
{
"name": "start_tracker",
"description": "Start or restart the measurement of a tracker against the prepaid credit balance. The first survey runs there and then, whatever the frequency, unless the tracker carries a next_survey_at still in the future: with one set, nothing runs until that moment, which is how a tracker comes back on a date of the person's choosing. Restarting a paused tracker picks its schedule back up, at whatever configuration it carries now. Refused with insufficient_credits when the balance does not cover one survey; that answer carries top_up_url, the page where the person adds credit, so give it to them. Starting"
},
{
"name": "survey_now",
"description": "Run one survey of a measuring tracker right now, on top of its schedule. Its settings stay as they are: same anchor, same frequency, and the next scheduled survey keeps its date. On a tracker whose frequency is on_demand, this is how every survey after the first one happens. It debits the prepaid credit balance like any survey, and the point joins the score series marked on_demand. The answer carries the survey id: read the results back with get_results, or the raw answers with get_responses. While one is still running, calling again answers that survey instead of starting a second one. Refuse"
},
{
"name": "pause_tracker",
"description": "Pause the measurement of an active tracker. The score series is kept; start_tracker resumes it."
},
{
"name": "archive_tracker",
"description": "File a finished tracker away: a campaign that ended, a brand that was sold, a trial that is over. It moves to the end of list_trackers with archived true, stops asking for anything, and its measurement pauses in the same call if it was still running, so the spending stops there. Bring it back with archived false: the tracker returns to the list as it was, and start_tracker restarts the measurement when the user asks for it. The sheet and the score series are kept and stay readable throughout (get_results answers as usual). Filing away an already filed tracker answers the same."
},
{
"name": "list_projects",
"description": "The projects of the account: the folders trackers are filed under (one project per tracker at most; pure organization, no effect on measurement or billing). Each carries its id, name, brand canon with its current version number (canon_version), archived flag and tracker count. The folders still in use come first, then the ones filed away (archive_project). Trackers without a project live under the virtual Default project."
},
{
"name": "create_project",
"description": "Create a project to file trackers under: one project per BRAND, never per language. It can carry the brand canon: the reference wording every publication reuses as is, written in ONE language, its canonical language (carried at creation, it is recorded as canon version 1). The canon is never translated: localized expressions on the pages are outputs, not a second canon. Nothing is filed by this call: pass the returned id as project_id when creating or updating a tracker. Refused with project_exists when a project with this name already exists, and the answer carries the existing project: reuse"
},
{
"name": "rename_project",
"description": "Correct the name of a project: the folder keeps its id, its canon, its trackers, its surfaces and its logbook, and the name shown is the only thing that changes. Names are unique per account: a name another project already goes by answers project_exists with that project, so read it back and settle another name with the user. Case, accents and spacing do not make two different names, which is why a project can always take back its own capitalisation. Sending the name it already carries answers the same, and a project filed away renames like any other. Use it for the name of the folder; the wor"
},
{
"name": "get_canon",
"description": "The brand canon of a project and every revision it went through. canon is the CURRENT wording, under the same keys update_project_canon writes (one_liner, short, long, category, language, perks, website, legal_name, address, phone, whatsapp, email), and canon_version its number. history carries each version newest first, with its author, its date, and changes, the fields that version touched with their before and after values. Reach for it to RE-PROPAGATE a revision: get_logbook says a canon moved to a version and which keys it touched, this says what the old wording was, which is the string t"
},
{
"name": "update_project_canon",
"description": "Revise the brand canon of a project. Field by field: a provided field replaces the current wording (an empty string clears it), an omitted field is kept as is. Any actual change records the NEXT canon version (numbered, immutable; version_created true in the answer); sending identical wording records nothing. The canon lives in ONE language, its canonical language (canon_language): it is never translated, changing the language is a revision like any other. The canon is meant to be STABLE: revising it is a rare and deliberate move, and every surface that reuses the wording will need to be broug"
},
{
"name": "get_link_targets",
"description": "The addresses of the brand that a watched page can link to. Two lists come back. derived: what is already covered without anyone typing it, each row with its source, \"canon\" (the canonical website of the brand) or \"surface\" (a page of the surface registry: the site, the LinkedIn or X profile, a directory listing, an app store page). free: the addresses set on the project on top of those. Read it before setting anything: an address already derived does not need to be added, and the derived list is what the customer gets for free from work already done. A link towards any of these is what the re"
},
{
"name": "set_link_targets",
"description": "Set the addresses of the brand that are neither its canonical website nor a page of the surface registry: a satellite domain the customer does not want to keep aligned, a tracking link, a partner page. They are set ONCE for the project and serve every line of the corroboration registry, present and future, so there is nothing to set line by line. The list you send REPLACES the previous one, and the answer returns what the project now holds, derived addresses included: read it back to confirm. An empty list keeps only the derived ones. Call get_link_targets first, and confirm with the user befo"
},
{
"name": "archive_project",
"description": "File a project away once the folder has served its purpose: a client that left, a brand that was sold. It moves to the end of list_projects with archived true, and stops being offered when filing a tracker. Bring it back with archived false. Nothing is deleted and nothing cascades: the trackers filed under it keep their status, keep measuring and keep showing up in list_trackers, and the answer carries tracker_count, how many are still filed under it, so you can go on with archive_tracker on each one when that is what the user meant. Filing away an already filed project answers the same. Defau"
},
{
"name": "list_surfaces",
"description": "The surface registry of a project: the pages about the brand where the customer has the FINAL SAY (website, GitHub, LinkedIn, X, YouTube, Wikidata, directories, app stores...). The split with corroborations is control, never who wrote the page: a page the customer can change is a surface, a page where someone else has the final say is a corroboration (list_corroborations). Each surface carries its type, url, label, languages, notes, its checklist and a status DERIVED from the checklist CELLS that hold it: checklist.required lists exactly those, the canon items of the template plus every check "
},
{
"name": "create_surface",
"description": "Register a surface of a project: one page about the brand where the customer has the final say (their site, their profiles, their listings, wherever they can change the content). The test that settles which registry a page belongs to: if the customer changes the page, does the change stay? Yes means they have the final say, so it is a surface; no means someone else has it, so it is a corroboration (create_corroboration), even on a page they can edit, as on a wiki. URL-FIRST: the url is the only thing needed, type and label are derived from it; pass them only to correct a derivation. The type d"
},
{
"name": "update_surface",
"description": "Update the registry sheet of a surface: only the fields you send change (a sent languages list replaces the previous one; an empty label or notes clears it). No journal line is ever written here: an alignment is earned with tick_surface_checklist, cell by cell. Languages ARE the columns of the checklist, so declaring the language of a single-language page renames its column and carries its verified cells along. When the change leaves no single destination (a language dropped from a page that keeps others, one column split into several), the columns that leave the model come back in dropped_che"
},
{
"name": "tick_surface_checklist",
"description": "Record what a surface actually carries, cell by cell, as many moves as you want in one call. The items are listed by list_surfaces as checklist.items: the template of the surface type (stable keys such as title_tag or llms_txt), then the checks the customer added of their own (add_surface_check), which tick here exactly like the rest, at their key. Most of them are yours to check (a title tag, JSON-LD, an llms.txt all read with a simple fetch). Three moves per cell. VERIFY (done true, or nothing): the item is constated on the page; an item of canon kind (checklist.kinds) is stamped with the cu"
},
{
"name": "add_surface_check",
"description": "Add a check of your own to the checklist of one surface: a requirement the person holds on THAT page, in their words. It becomes REQUIRED for the page to count as aligned, exactly like the canon items of the template, and it is ticked with tick_surface_checklist at the key returned here. Reach for it whenever the person states something a page must carry that is theirs to decide: the pricing block quotes the canon boilerplate, the OG image is the current one, the footer carries the legal name, the pinned post links to the launch page. restates_canon is the one judgement to make, and the questi"
},
{
"name": "update_surface_check",
"description": "Correct a check of your own on a surface: its label, and whether it restates the canon. Only what you send changes. The key never moves, being the coordinate of the cells already recorded, so renaming a check keeps every tick it carries. Turning restates_canon on makes a tick recorded without a canon stamp perish, which is the honest reading: the page was never checked against a wording."
},
{
"name": "delete_surface_check",
"description": "Take a check of your own out of the checklist of a surface: it leaves the list, stops holding the page short of aligned and stops accepting ticks. Use it when the requirement no longer applies to that page. Nothing is lost: the check and the cells it carries are kept, read back in checklist.custom with deleted true, and restore_surface_check brings both back, so a check taken out by mistake costs nothing. Taking out an already taken out check answers the same."
},
{
"name": "restore_surface_check",
"description": "Bring a check of your own back to the checklist of a surface, with the cells it had: it becomes work again, so the page needs it verified to count as aligned. The checks to bring back are listed by list_surfaces in checklist.custom, with deleted true. Restoring a check already in the checklist answers the same."
},
{
"name": "delete_surface",
"description": "Take a surface out of the registry: the page stops being followed, and the registry stops asking to bring it in phase with the canon. Use it for a page that is gone (account closed, listing removed) or for a line that had no place there. The sheet and the alignment journal are kept, and restore_surface brings the surface back with them, so a line taken out by mistake costs nothing. Taking out an already taken out surface answers the same."
},
{
"name": "restore_surface",
"description": "Bring a surface back to the registry, with its sheet and its alignment journal as they were. Call list_surfaces with deleted set to \"only\" to find the surfaces to bring back. Restoring a surface already in the registry answers the same."
}
],
"profiled_at": "2026-09-25T05:01:31.856Z"
},
"unreachable": false
}