{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_gpxawtdpbkaj","handle":"bankweave","url":"https://wellknown.network/agents/bankweave","links":{"self":"https://wellknown.network/agents/bankweave/record.json","html":"https://wellknown.network/agents/bankweave","markdown":"https://wellknown.network/agents/bankweave/record.md","api":"https://wellknown.network/api/v1/agents/bankweave","status":"https://wellknown.network/api/v1/agents/bankweave/status","claim":"https://wellknown.network/agents/bankweave/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/bankweave/claim.json","badge":"https://wellknown.network/agents/bankweave/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/bankweave/history","tools":"https://wellknown.network/api/v1/agents/bankweave/tools"},"ard":{"identifier":"urn:air:bankweave-api.onrender.com:server:bankweave","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"BankWeave","summary":"Read-only FalkorDB tools for cross-bank AML investigations: rings, money paths, echo-proof claims.","description":"Read-only FalkorDB tools for cross-bank AML investigations: rings, money paths, echo-proof claims.","publisher":{"name":"LSUDOKO","url":null},"homepage":"https://bankweave.vercel.app","repository":"https://github.com/LSUDOKO/BankWeave","version":"3.0.1","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://bankweave-api.onrender.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"oci:ghcr.io/lsudoko/bankweave-mcp:3.0.0","type":"package_oci","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-18T18:24:46.39231Z","publishedAt":"2026-10-18T18:24:46.39231Z","registryName":"io.github.LSUDOKO/bankweave"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":1,"provenance":"derived"},{"slug":"finance.banking","name":"Banking","confidence":0.833,"provenance":"derived"},{"slug":"ai.evaluation","name":"Evaluation & Benchmarks","confidence":0.51,"provenance":"derived"}],"categories":["ai","finance","knowledge"],"language":"en"},"observed":{"status":"recently_observed","statusReason":"Responded 9h ago; 1 recent check failed (latest 2h ago).","lastOkAt":"2026-10-25T14:28:19.652Z","lastProbedAt":"2026-10-25T21:33:03.830Z","statusComputedAt":"2026-10-25T21:34:28.681Z","reliability30d":{"probes":25,"successRate":0.96,"p50Ms":232,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":25,"ok":24,"authBoundaryOk":0,"serviceOk":24,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-25T21:33:03.830Z","kind":"mcp_initialize","ok":false,"httpStatus":503,"latencyMs":207,"error":"http 503","detail":null},{"at":"2026-10-25T14:28:19.652Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":212,"error":null,"detail":{"tools":[{"name":"engine_overview","description":"Health and size of the whole system: FalkorDB memory/version, graphs (banks, cases),\n    consortium size (accounts, banks, transfers) and the alert queue by sta"},{"name":"list_graphs","description":"List every FalkorDB graph BankWeave keeps, grouped by kind: the consortium (cross-bank,\n    hashed), one graph per bank (that bank's partial view), one graph pe"},{"name":"graph_schema","description":"Schema of one graph: node labels, relationship types, property keys and indexes with\n    their kind (RANGE, FULLTEXT, VECTOR). graph: 'consortium', 'bank_<id>',"},{"name":"list_cases","description":"List investigation cases (newest first) with status, title, seed account, number of\n    alerts/accounts, the banks involved and whether its case graph is loaded"},{"name":"get_case","description":"Everything about one case from its own case graph: header, claims (each with naive vs\n    echo-proof confidence, paths vs independent_sources, state, supporting"},{"name":"explain_claim","description":"Why a claim has the confidence it has (GraphEcho echo-proof scoring). Groups supporting\n    and challenging evidence by ORIGIN: many paths that lead back to the"},{"name":"account_network","description":"An account's cross-bank neighbourhood in the consortium graph: its scores (pagerank,\n    motif score, community, WCC component size, pass-through pairs), shared"},{"name":"trace_money_path","description":"Shortest money paths from one account to another, hop by hop with transaction ids,\n    amounts and the bank of every account on the path, so you can see the mon"},{"name":"find_rings","description":"Candidate laundering rings: communities of accounts that trade mostly among themselves,\n    found by label propagation on the transfer graph. Cross-bank rings ("},{"name":"top_hubs","description":"Accounts where money pools: PageRank over TRANSFERS, highest first, with bank ids.\n    graph: 'consortium', 'bank_<id>' or 'case_<id>'. FalkorDB features: algo."},{"name":"connected_components","description":"Weakly connected components of the transfer graph (largest first): size, number of\n    banks, a sample of members, plus how many components are tiny 'islands' t"},{"name":"similar_accounts","description":"Accounts whose behaviour (activity, amounts, timing, degree profile) is closest to this\n    one, by cosine distance over Account.behavior_vec (lower = more alik"},{"name":"search_customers","description":"Fuzzy name search over customers (Person) or businesses (Company) across all banks,\n    with the accounts and banks each one owns. Tokens are OR-ed, so partial "},{"name":"list_alerts","description":"The alert queue with counts by status. status: 'open', 'case' (escalated into a case)\n    or 'cleared'; omit for all. Each alert has its rule, reason, account, "},{"name":"triage_alert","description":"Why an alert was cleared or escalated into a case. Returns the alert, the triage\n    decision and its reason, the graph signals the triage agent recorded (compo"},{"name":"typology_guidance","description":"Laundering typology guidance (e.g. 'fan-out then fan-in through mules', 'structuring\n    below reporting threshold') from BankWeave's typology knowledge graph, "},{"name":"run_readonly_cypher","description":"Last resort: run your own read-only Cypher on one graph. Runs as GRAPH.RO_QUERY (the\n    engine rejects writes) after a guard: one statement, no CREATE/MERGE/SE"}],"toolCount":17,"toolsHash":"e660866e9bc6452be8ba30d9fb28760d866440b34e4fad5077e2f89d205dc16b","serverName":"bankweave","capabilities":["prompts","resources","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-25T07:25:42.697Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":193,"error":null,"detail":{"tools":[{"name":"engine_overview","description":"Health and size of the whole system: FalkorDB memory/version, graphs (banks, cases),\n    consortium size (accounts, banks, transfers) and the alert queue by sta"},{"name":"list_graphs","description":"List every FalkorDB graph BankWeave keeps, grouped by kind: the consortium (cross-bank,\n    hashed), one graph per bank (that bank's partial view), one graph pe"},{"name":"graph_schema","description":"Schema of one graph: node labels, relationship types, property keys and indexes with\n    their kind (RANGE, FULLTEXT, VECTOR). graph: 'consortium', 'bank_<id>',"},{"name":"list_cases","description":"List investigation cases (newest first) with status, title, seed account, number of\n    alerts/accounts, the banks involved and whether its case graph is loaded"},{"name":"get_case","description":"Everything about one case from its own case graph: header, claims (each with naive vs\n    echo-proof confidence, paths vs independent_sources, state, supporting"},{"name":"explain_claim","description":"Why a claim has the confidence it has (GraphEcho echo-proof scoring). Groups supporting\n    and challenging evidence by ORIGIN: many paths that lead back to the"},{"name":"account_network","description":"An account's cross-bank neighbourhood in the consortium graph: its scores (pagerank,\n    motif score, community, WCC component size, pass-through pairs), shared"},{"name":"trace_money_path","description":"Shortest money paths from one account to another, hop by hop with transaction ids,\n    amounts and the bank of every account on the path, so you can see the mon"},{"name":"find_rings","description":"Candidate laundering rings: communities of accounts that trade mostly among themselves,\n    found by label propagation on the transfer graph. Cross-bank rings ("},{"name":"top_hubs","description":"Accounts where money pools: PageRank over TRANSFERS, highest first, with bank ids.\n    graph: 'consortium', 'bank_<id>' or 'case_<id>'. FalkorDB features: algo."},{"name":"connected_components","description":"Weakly connected components of the transfer graph (largest first): size, number of\n    banks, a sample of members, plus how many components are tiny 'islands' t"},{"name":"similar_accounts","description":"Accounts whose behaviour (activity, amounts, timing, degree profile) is closest to this\n    one, by cosine distance over Account.behavior_vec (lower = more alik"},{"name":"search_customers","description":"Fuzzy name search over customers (Person) or businesses (Company) across all banks,\n    with the accounts and banks each one owns. Tokens are OR-ed, so partial "},{"name":"list_alerts","description":"The alert queue with counts by status. status: 'open', 'case' (escalated into a case)\n    or 'cleared'; omit for all. Each alert has its rule, reason, account, "},{"name":"triage_alert","description":"Why an alert was cleared or escalated into a case. Returns the alert, the triage\n    decision and its reason, the graph signals the triage agent recorded (compo"},{"name":"typology_guidance","description":"Laundering typology guidance (e.g. 'fan-out then fan-in through mules', 'structuring\n    below reporting threshold') from BankWeave's typology knowledge graph, "},{"name":"run_readonly_cypher","description":"Last resort: run your own read-only Cypher on one graph. Runs as GRAPH.RO_QUERY (the\n    engine rejects writes) after a guard: one statement, no CREATE/MERGE/SE"}],"toolCount":17,"toolsHash":"e660866e9bc6452be8ba30d9fb28760d866440b34e4fad5077e2f89d205dc16b","serverName":"bankweave","capabilities":["prompts","resources","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-25T01:28:12.298Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":497,"error":null,"detail":{"tools":[{"name":"engine_overview","description":"Health and size of the whole system: FalkorDB memory/version, graphs (banks, cases),\n    consortium size (accounts, banks, transfers) and the alert queue by sta"},{"name":"list_graphs","description":"List every FalkorDB graph BankWeave keeps, grouped by kind: the consortium (cross-bank,\n    hashed), one graph per bank (that bank's partial view), one graph pe"},{"name":"graph_schema","description":"Schema of one graph: node labels, relationship types, property keys and indexes with\n    their kind (RANGE, FULLTEXT, VECTOR). graph: 'consortium', 'bank_<id>',"},{"name":"list_cases","description":"List investigation cases (newest first) with status, title, seed account, number of\n    alerts/accounts, the banks involved and whether its case graph is loaded"},{"name":"get_case","description":"Everything about one case from its own case graph: header, claims (each with naive vs\n    echo-proof confidence, paths vs independent_sources, state, supporting"},{"name":"explain_claim","description":"Why a claim has the confidence it has (GraphEcho echo-proof scoring). Groups supporting\n    and challenging evidence by ORIGIN: many paths that lead back to the"},{"name":"account_network","description":"An account's cross-bank neighbourhood in the consortium graph: its scores (pagerank,\n    motif score, community, WCC component size, pass-through pairs), shared"},{"name":"trace_money_path","description":"Shortest money paths from one account to another, hop by hop with transaction ids,\n    amounts and the bank of every account on the path, so you can see the mon"},{"name":"find_rings","description":"Candidate laundering rings: communities of accounts that trade mostly among themselves,\n    found by label propagation on the transfer graph. Cross-bank rings ("},{"name":"top_hubs","description":"Accounts where money pools: PageRank over TRANSFERS, highest first, with bank ids.\n    graph: 'consortium', 'bank_<id>' or 'case_<id>'. FalkorDB features: algo."},{"name":"connected_components","description":"Weakly connected components of the transfer graph (largest first): size, number of\n    banks, a sample of members, plus how many components are tiny 'islands' t"},{"name":"similar_accounts","description":"Accounts whose behaviour (activity, amounts, timing, degree profile) is closest to this\n    one, by cosine distance over Account.behavior_vec (lower = more alik"},{"name":"search_customers","description":"Fuzzy name search over customers (Person) or businesses (Company) across all banks,\n    with the accounts and banks each one owns. Tokens are OR-ed, so partial "},{"name":"list_alerts","description":"The alert queue with counts by status. status: 'open', 'case' (escalated into a case)\n    or 'cleared'; omit for all. Each alert has its rule, reason, account, "},{"name":"triage_alert","description":"Why an alert was cleared or escalated into a case. Returns the alert, the triage\n    decision and its reason, the graph signals the triage agent recorded (compo"},{"name":"typology_guidance","description":"Laundering typology guidance (e.g. 'fan-out then fan-in through mules', 'structuring\n    below reporting threshold') from BankWeave's typology knowledge graph, "},{"name":"run_readonly_cypher","description":"Last resort: run your own read-only Cypher on one graph. Runs as GRAPH.RO_QUERY (the\n    engine rejects writes) after a guard: one statement, no CREATE/MERGE/SE"}],"toolCount":17,"toolsHash":"e660866e9bc6452be8ba30d9fb28760d866440b34e4fad5077e2f89d205dc16b","serverName":"bankweave","capabilities":["prompts","resources","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-24T18:31:10.969Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":212,"error":null,"detail":{"tools":[{"name":"engine_overview","description":"Health and size of the whole system: FalkorDB memory/version, graphs (banks, cases),\n    consortium size (accounts, banks, transfers) and the alert queue by sta"},{"name":"list_graphs","description":"List every FalkorDB graph BankWeave keeps, grouped by kind: the consortium (cross-bank,\n    hashed), one graph per bank (that bank's partial view), one graph pe"},{"name":"graph_schema","description":"Schema of one graph: node labels, relationship types, property keys and indexes with\n    their kind (RANGE, FULLTEXT, VECTOR). graph: 'consortium', 'bank_<id>',"},{"name":"list_cases","description":"List investigation cases (newest first) with status, title, seed account, number of\n    alerts/accounts, the banks involved and whether its case graph is loaded"},{"name":"get_case","description":"Everything about one case from its own case graph: header, claims (each with naive vs\n    echo-proof confidence, paths vs independent_sources, state, supporting"},{"name":"explain_claim","description":"Why a claim has the confidence it has (GraphEcho echo-proof scoring). Groups supporting\n    and challenging evidence by ORIGIN: many paths that lead back to the"},{"name":"account_network","description":"An account's cross-bank neighbourhood in the consortium graph: its scores (pagerank,\n    motif score, community, WCC component size, pass-through pairs), shared"},{"name":"trace_money_path","description":"Shortest money paths from one account to another, hop by hop with transaction ids,\n    amounts and the bank of every account on the path, so you can see the mon"},{"name":"find_rings","description":"Candidate laundering rings: communities of accounts that trade mostly among themselves,\n    found by label propagation on the transfer graph. Cross-bank rings ("},{"name":"top_hubs","description":"Accounts where money pools: PageRank over TRANSFERS, highest first, with bank ids.\n    graph: 'consortium', 'bank_<id>' or 'case_<id>'. FalkorDB features: algo."},{"name":"connected_components","description":"Weakly connected components of the transfer graph (largest first): size, number of\n    banks, a sample of members, plus how many components are tiny 'islands' t"},{"name":"similar_accounts","description":"Accounts whose behaviour (activity, amounts, timing, degree profile) is closest to this\n    one, by cosine distance over Account.behavior_vec (lower = more alik"},{"name":"search_customers","description":"Fuzzy name search over customers (Person) or businesses (Company) across all banks,\n    with the accounts and banks each one owns. Tokens are OR-ed, so partial "},{"name":"list_alerts","description":"The alert queue with counts by status. status: 'open', 'case' (escalated into a case)\n    or 'cleared'; omit for all. Each alert has its rule, reason, account, "},{"name":"triage_alert","description":"Why an alert was cleared or escalated into a case. Returns the alert, the triage\n    decision and its reason, the graph signals the triage agent recorded (compo"},{"name":"typology_guidance","description":"Laundering typology guidance (e.g. 'fan-out then fan-in through mules', 'structuring\n    below reporting threshold') from BankWeave's typology knowledge graph, "},{"name":"run_readonly_cypher","description":"Last resort: run your own read-only Cypher on one graph. Runs as GRAPH.RO_QUERY (the\n    engine rejects writes) after a guard: one statement, no CREATE/MERGE/SE"}],"toolCount":17,"toolsHash":"e660866e9bc6452be8ba30d9fb28760d866440b34e4fad5077e2f89d205dc16b","serverName":"bankweave","capabilities":["prompts","resources","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-24T11:26:30.523Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":498,"error":null,"detail":{"tools":[{"name":"engine_overview","description":"Health and size of the whole system: FalkorDB memory/version, graphs (banks, cases),\n    consortium size (accounts, banks, transfers) and the alert queue by sta"},{"name":"list_graphs","description":"List every FalkorDB graph BankWeave keeps, grouped by kind: the consortium (cross-bank,\n    hashed), one graph per bank (that bank's partial view), one graph pe"},{"name":"graph_schema","description":"Schema of one graph: node labels, relationship types, property keys and indexes with\n    their kind (RANGE, FULLTEXT, VECTOR). graph: 'consortium', 'bank_<id>',"},{"name":"list_cases","description":"List investigation cases (newest first) with status, title, seed account, number of\n    alerts/accounts, the banks involved and whether its case graph is loaded"},{"name":"get_case","description":"Everything about one case from its own case graph: header, claims (each with naive vs\n    echo-proof confidence, paths vs independent_sources, state, supporting"},{"name":"explain_claim","description":"Why a claim has the confidence it has (GraphEcho echo-proof scoring). Groups supporting\n    and challenging evidence by ORIGIN: many paths that lead back to the"},{"name":"account_network","description":"An account's cross-bank neighbourhood in the consortium graph: its scores (pagerank,\n    motif score, community, WCC component size, pass-through pairs), shared"},{"name":"trace_money_path","description":"Shortest money paths from one account to another, hop by hop with transaction ids,\n    amounts and the bank of every account on the path, so you can see the mon"},{"name":"find_rings","description":"Candidate laundering rings: communities of accounts that trade mostly among themselves,\n    found by label propagation on the transfer graph. Cross-bank rings ("},{"name":"top_hubs","description":"Accounts where money pools: PageRank over TRANSFERS, highest first, with bank ids.\n    graph: 'consortium', 'bank_<id>' or 'case_<id>'. FalkorDB features: algo."},{"name":"connected_components","description":"Weakly connected components of the transfer graph (largest first): size, number of\n    banks, a sample of members, plus how many components are tiny 'islands' t"},{"name":"similar_accounts","description":"Accounts whose behaviour (activity, amounts, timing, degree profile) is closest to this\n    one, by cosine distance over Account.behavior_vec (lower = more alik"},{"name":"search_customers","description":"Fuzzy name search over customers (Person) or businesses (Company) across all banks,\n    with the accounts and banks each one owns. Tokens are OR-ed, so partial "},{"name":"list_alerts","description":"The alert queue with counts by status. status: 'open', 'case' (escalated into a case)\n    or 'cleared'; omit for all. Each alert has its rule, reason, account, "},{"name":"triage_alert","description":"Why an alert was cleared or escalated into a case. Returns the alert, the triage\n    decision and its reason, the graph signals the triage agent recorded (compo"},{"name":"typology_guidance","description":"Laundering typology guidance (e.g. 'fan-out then fan-in through mules', 'structuring\n    below reporting threshold') from BankWeave's typology knowledge graph, "},{"name":"run_readonly_cypher","description":"Last resort: run your own read-only Cypher on one graph. Runs as GRAPH.RO_QUERY (the\n    engine rejects writes) after a guard: one statement, no CREATE/MERGE/SE"}],"toolCount":17,"toolsHash":"e660866e9bc6452be8ba30d9fb28760d866440b34e4fad5077e2f89d205dc16b","serverName":"bankweave","capabilities":["prompts","resources","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-24T04:23:55.775Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":209,"error":null,"detail":{"tools":[{"name":"engine_overview","description":"Health and size of the whole system: FalkorDB memory/version, graphs (banks, cases),\n    consortium size (accounts, banks, transfers) and the alert queue by sta"},{"name":"list_graphs","description":"List every FalkorDB graph BankWeave keeps, grouped by kind: the consortium (cross-bank,\n    hashed), one graph per bank (that bank's partial view), one graph pe"},{"name":"graph_schema","description":"Schema of one graph: node labels, relationship types, property keys and indexes with\n    their kind (RANGE, FULLTEXT, VECTOR). graph: 'consortium', 'bank_<id>',"},{"name":"list_cases","description":"List investigation cases (newest first) with status, title, seed account, number of\n    alerts/accounts, the banks involved and whether its case graph is loaded"},{"name":"get_case","description":"Everything about one case from its own case graph: header, claims (each with naive vs\n    echo-proof confidence, paths vs independent_sources, state, supporting"},{"name":"explain_claim","description":"Why a claim has the confidence it has (GraphEcho echo-proof scoring). Groups supporting\n    and challenging evidence by ORIGIN: many paths that lead back to the"},{"name":"account_network","description":"An account's cross-bank neighbourhood in the consortium graph: its scores (pagerank,\n    motif score, community, WCC component size, pass-through pairs), shared"},{"name":"trace_money_path","description":"Shortest money paths from one account to another, hop by hop with transaction ids,\n    amounts and the bank of every account on the path, so you can see the mon"},{"name":"find_rings","description":"Candidate laundering rings: communities of accounts that trade mostly among themselves,\n    found by label propagation on the transfer graph. Cross-bank rings ("},{"name":"top_hubs","description":"Accounts where money pools: PageRank over TRANSFERS, highest first, with bank ids.\n    graph: 'consortium', 'bank_<id>' or 'case_<id>'. FalkorDB features: algo."},{"name":"connected_components","description":"Weakly connected components of the transfer graph (largest first): size, number of\n    banks, a sample of members, plus how many components are tiny 'islands' t"},{"name":"similar_accounts","description":"Accounts whose behaviour (activity, amounts, timing, degree profile) is closest to this\n    one, by cosine distance over Account.behavior_vec (lower = more alik"},{"name":"search_customers","description":"Fuzzy name search over customers (Person) or businesses (Company) across all banks,\n    with the accounts and banks each one owns. Tokens are OR-ed, so partial "},{"name":"list_alerts","description":"The alert queue with counts by status. status: 'open', 'case' (escalated into a case)\n    or 'cleared'; omit for all. Each alert has its rule, reason, account, "},{"name":"triage_alert","description":"Why an alert was cleared or escalated into a case. Returns the alert, the triage\n    decision and its reason, the graph signals the triage agent recorded (compo"},{"name":"typology_guidance","description":"Laundering typology guidance (e.g. 'fan-out then fan-in through mules', 'structuring\n    below reporting threshold') from BankWeave's typology knowledge graph, "},{"name":"run_readonly_cypher","description":"Last resort: run your own read-only Cypher on one graph. Runs as GRAPH.RO_QUERY (the\n    engine rejects writes) after a guard: one statement, no CREATE/MERGE/SE"}],"toolCount":17,"toolsHash":"e660866e9bc6452be8ba30d9fb28760d866440b34e4fad5077e2f89d205dc16b","serverName":"bankweave","capabilities":["prompts","resources","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T22:26:05.742Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":507,"error":null,"detail":{"tools":[{"name":"engine_overview","description":"Health and size of the whole system: FalkorDB memory/version, graphs (banks, cases),\n    consortium size (accounts, banks, transfers) and the alert queue by sta"},{"name":"list_graphs","description":"List every FalkorDB graph BankWeave keeps, grouped by kind: the consortium (cross-bank,\n    hashed), one graph per bank (that bank's partial view), one graph pe"},{"name":"graph_schema","description":"Schema of one graph: node labels, relationship types, property keys and indexes with\n    their kind (RANGE, FULLTEXT, VECTOR). graph: 'consortium', 'bank_<id>',"},{"name":"list_cases","description":"List investigation cases (newest first) with status, title, seed account, number of\n    alerts/accounts, the banks involved and whether its case graph is loaded"},{"name":"get_case","description":"Everything about one case from its own case graph: header, claims (each with naive vs\n    echo-proof confidence, paths vs independent_sources, state, supporting"},{"name":"explain_claim","description":"Why a claim has the confidence it has (GraphEcho echo-proof scoring). Groups supporting\n    and challenging evidence by ORIGIN: many paths that lead back to the"},{"name":"account_network","description":"An account's cross-bank neighbourhood in the consortium graph: its scores (pagerank,\n    motif score, community, WCC component size, pass-through pairs), shared"},{"name":"trace_money_path","description":"Shortest money paths from one account to another, hop by hop with transaction ids,\n    amounts and the bank of every account on the path, so you can see the mon"},{"name":"find_rings","description":"Candidate laundering rings: communities of accounts that trade mostly among themselves,\n    found by label propagation on the transfer graph. Cross-bank rings ("},{"name":"top_hubs","description":"Accounts where money pools: PageRank over TRANSFERS, highest first, with bank ids.\n    graph: 'consortium', 'bank_<id>' or 'case_<id>'. FalkorDB features: algo."},{"name":"connected_components","description":"Weakly connected components of the transfer graph (largest first): size, number of\n    banks, a sample of members, plus how many components are tiny 'islands' t"},{"name":"similar_accounts","description":"Accounts whose behaviour (activity, amounts, timing, degree profile) is closest to this\n    one, by cosine distance over Account.behavior_vec (lower = more alik"},{"name":"search_customers","description":"Fuzzy name search over customers (Person) or businesses (Company) across all banks,\n    with the accounts and banks each one owns. Tokens are OR-ed, so partial "},{"name":"list_alerts","description":"The alert queue with counts by status. status: 'open', 'case' (escalated into a case)\n    or 'cleared'; omit for all. Each alert has its rule, reason, account, "},{"name":"triage_alert","description":"Why an alert was cleared or escalated into a case. Returns the alert, the triage\n    decision and its reason, the graph signals the triage agent recorded (compo"},{"name":"typology_guidance","description":"Laundering typology guidance (e.g. 'fan-out then fan-in through mules', 'structuring\n    below reporting threshold') from BankWeave's typology knowledge graph, "},{"name":"run_readonly_cypher","description":"Last resort: run your own read-only Cypher on one graph. Runs as GRAPH.RO_QUERY (the\n    engine rejects writes) after a guard: one statement, no CREATE/MERGE/SE"}],"toolCount":17,"toolsHash":"e660866e9bc6452be8ba30d9fb28760d866440b34e4fad5077e2f89d205dc16b","serverName":"bankweave","capabilities":["prompts","resources","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T16:30:00.054Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":203,"error":null,"detail":{"tools":[{"name":"engine_overview","description":"Health and size of the whole system: FalkorDB memory/version, graphs (banks, cases),\n    consortium size (accounts, banks, transfers) and the alert queue by sta"},{"name":"list_graphs","description":"List every FalkorDB graph BankWeave keeps, grouped by kind: the consortium (cross-bank,\n    hashed), one graph per bank (that bank's partial view), one graph pe"},{"name":"graph_schema","description":"Schema of one graph: node labels, relationship types, property keys and indexes with\n    their kind (RANGE, FULLTEXT, VECTOR). graph: 'consortium', 'bank_<id>',"},{"name":"list_cases","description":"List investigation cases (newest first) with status, title, seed account, number of\n    alerts/accounts, the banks involved and whether its case graph is loaded"},{"name":"get_case","description":"Everything about one case from its own case graph: header, claims (each with naive vs\n    echo-proof confidence, paths vs independent_sources, state, supporting"},{"name":"explain_claim","description":"Why a claim has the confidence it has (GraphEcho echo-proof scoring). Groups supporting\n    and challenging evidence by ORIGIN: many paths that lead back to the"},{"name":"account_network","description":"An account's cross-bank neighbourhood in the consortium graph: its scores (pagerank,\n    motif score, community, WCC component size, pass-through pairs), shared"},{"name":"trace_money_path","description":"Shortest money paths from one account to another, hop by hop with transaction ids,\n    amounts and the bank of every account on the path, so you can see the mon"},{"name":"find_rings","description":"Candidate laundering rings: communities of accounts that trade mostly among themselves,\n    found by label propagation on the transfer graph. Cross-bank rings ("},{"name":"top_hubs","description":"Accounts where money pools: PageRank over TRANSFERS, highest first, with bank ids.\n    graph: 'consortium', 'bank_<id>' or 'case_<id>'. FalkorDB features: algo."},{"name":"connected_components","description":"Weakly connected components of the transfer graph (largest first): size, number of\n    banks, a sample of members, plus how many components are tiny 'islands' t"},{"name":"similar_accounts","description":"Accounts whose behaviour (activity, amounts, timing, degree profile) is closest to this\n    one, by cosine distance over Account.behavior_vec (lower = more alik"},{"name":"search_customers","description":"Fuzzy name search over customers (Person) or businesses (Company) across all banks,\n    with the accounts and banks each one owns. Tokens are OR-ed, so partial "},{"name":"list_alerts","description":"The alert queue with counts by status. status: 'open', 'case' (escalated into a case)\n    or 'cleared'; omit for all. Each alert has its rule, reason, account, "},{"name":"triage_alert","description":"Why an alert was cleared or escalated into a case. Returns the alert, the triage\n    decision and its reason, the graph signals the triage agent recorded (compo"},{"name":"typology_guidance","description":"Laundering typology guidance (e.g. 'fan-out then fan-in through mules', 'structuring\n    below reporting threshold') from BankWeave's typology knowledge graph, "},{"name":"run_readonly_cypher","description":"Last resort: run your own read-only Cypher on one graph. Runs as GRAPH.RO_QUERY (the\n    engine rejects writes) after a guard: one statement, no CREATE/MERGE/SE"}],"toolCount":17,"toolsHash":"e660866e9bc6452be8ba30d9fb28760d866440b34e4fad5077e2f89d205dc16b","serverName":"bankweave","capabilities":["prompts","resources","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T10:33:31.736Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":184,"error":null,"detail":{"tools":[{"name":"engine_overview","description":"Health and size of the whole system: FalkorDB memory/version, graphs (banks, cases),\n    consortium size (accounts, banks, transfers) and the alert queue by sta"},{"name":"list_graphs","description":"List every FalkorDB graph BankWeave keeps, grouped by kind: the consortium (cross-bank,\n    hashed), one graph per bank (that bank's partial view), one graph pe"},{"name":"graph_schema","description":"Schema of one graph: node labels, relationship types, property keys and indexes with\n    their kind (RANGE, FULLTEXT, VECTOR). graph: 'consortium', 'bank_<id>',"},{"name":"list_cases","description":"List investigation cases (newest first) with status, title, seed account, number of\n    alerts/accounts, the banks involved and whether its case graph is loaded"},{"name":"get_case","description":"Everything about one case from its own case graph: header, claims (each with naive vs\n    echo-proof confidence, paths vs independent_sources, state, supporting"},{"name":"explain_claim","description":"Why a claim has the confidence it has (GraphEcho echo-proof scoring). Groups supporting\n    and challenging evidence by ORIGIN: many paths that lead back to the"},{"name":"account_network","description":"An account's cross-bank neighbourhood in the consortium graph: its scores (pagerank,\n    motif score, community, WCC component size, pass-through pairs), shared"},{"name":"trace_money_path","description":"Shortest money paths from one account to another, hop by hop with transaction ids,\n    amounts and the bank of every account on the path, so you can see the mon"},{"name":"find_rings","description":"Candidate laundering rings: communities of accounts that trade mostly among themselves,\n    found by label propagation on the transfer graph. Cross-bank rings ("},{"name":"top_hubs","description":"Accounts where money pools: PageRank over TRANSFERS, highest first, with bank ids.\n    graph: 'consortium', 'bank_<id>' or 'case_<id>'. FalkorDB features: algo."},{"name":"connected_components","description":"Weakly connected components of the transfer graph (largest first): size, number of\n    banks, a sample of members, plus how many components are tiny 'islands' t"},{"name":"similar_accounts","description":"Accounts whose behaviour (activity, amounts, timing, degree profile) is closest to this\n    one, by cosine distance over Account.behavior_vec (lower = more alik"},{"name":"search_customers","description":"Fuzzy name search over customers (Person) or businesses (Company) across all banks,\n    with the accounts and banks each one owns. Tokens are OR-ed, so partial "},{"name":"list_alerts","description":"The alert queue with counts by status. status: 'open', 'case' (escalated into a case)\n    or 'cleared'; omit for all. Each alert has its rule, reason, account, "},{"name":"triage_alert","description":"Why an alert was cleared or escalated into a case. Returns the alert, the triage\n    decision and its reason, the graph signals the triage agent recorded (compo"},{"name":"typology_guidance","description":"Laundering typology guidance (e.g. 'fan-out then fan-in through mules', 'structuring\n    below reporting threshold') from BankWeave's typology knowledge graph, "},{"name":"run_readonly_cypher","description":"Last resort: run your own read-only Cypher on one graph. Runs as GRAPH.RO_QUERY (the\n    engine rejects writes) after a guard: one statement, no CREATE/MERGE/SE"}],"toolCount":17,"toolsHash":"e660866e9bc6452be8ba30d9fb28760d866440b34e4fad5077e2f89d205dc16b","serverName":"bankweave","capabilities":["prompts","resources","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"engine_overview","description":"Health and size of the whole system: FalkorDB memory/version, graphs (banks, cases),\n    consortium size (accounts, banks, transfers) and the alert queue by sta"},{"name":"list_graphs","description":"List every FalkorDB graph BankWeave keeps, grouped by kind: the consortium (cross-bank,\n    hashed), one graph per bank (that bank's partial view), one graph pe"},{"name":"graph_schema","description":"Schema of one graph: node labels, relationship types, property keys and indexes with\n    their kind (RANGE, FULLTEXT, VECTOR). graph: 'consortium', 'bank_<id>',"},{"name":"list_cases","description":"List investigation cases (newest first) with status, title, seed account, number of\n    alerts/accounts, the banks involved and whether its case graph is loaded"},{"name":"get_case","description":"Everything about one case from its own case graph: header, claims (each with naive vs\n    echo-proof confidence, paths vs independent_sources, state, supporting"},{"name":"explain_claim","description":"Why a claim has the confidence it has (GraphEcho echo-proof scoring). Groups supporting\n    and challenging evidence by ORIGIN: many paths that lead back to the"},{"name":"account_network","description":"An account's cross-bank neighbourhood in the consortium graph: its scores (pagerank,\n    motif score, community, WCC component size, pass-through pairs), shared"},{"name":"trace_money_path","description":"Shortest money paths from one account to another, hop by hop with transaction ids,\n    amounts and the bank of every account on the path, so you can see the mon"},{"name":"find_rings","description":"Candidate laundering rings: communities of accounts that trade mostly among themselves,\n    found by label propagation on the transfer graph. Cross-bank rings ("},{"name":"top_hubs","description":"Accounts where money pools: PageRank over TRANSFERS, highest first, with bank ids.\n    graph: 'consortium', 'bank_<id>' or 'case_<id>'. FalkorDB features: algo."},{"name":"connected_components","description":"Weakly connected components of the transfer graph (largest first): size, number of\n    banks, a sample of members, plus how many components are tiny 'islands' t"},{"name":"similar_accounts","description":"Accounts whose behaviour (activity, amounts, timing, degree profile) is closest to this\n    one, by cosine distance over Account.behavior_vec (lower = more alik"},{"name":"search_customers","description":"Fuzzy name search over customers (Person) or businesses (Company) across all banks,\n    with the accounts and banks each one owns. Tokens are OR-ed, so partial "},{"name":"list_alerts","description":"The alert queue with counts by status. status: 'open', 'case' (escalated into a case)\n    or 'cleared'; omit for all. Each alert has its rule, reason, account, "},{"name":"triage_alert","description":"Why an alert was cleared or escalated into a case. Returns the alert, the triage\n    decision and its reason, the graph signals the triage agent recorded (compo"},{"name":"typology_guidance","description":"Laundering typology guidance (e.g. 'fan-out then fan-in through mules', 'structuring\n    below reporting threshold') from BankWeave's typology knowledge graph, "},{"name":"run_readonly_cypher","description":"Last resort: run your own read-only Cypher on one graph. Runs as GRAPH.RO_QUERY (the\n    engine rejects writes) after a guard: one statement, no CREATE/MERGE/SE"}],"package":null,"toolSurface":{"id":"ts_wsxvqm6he87s","endpointId":"ep_6ebf6zexavye","hash":"e660866e9bc6452be8ba30d9fb28760d866440b34e4fad5077e2f89d205dc16b","toolCount":17,"serverName":"bankweave","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-19T00:35:17.496Z","lastSeenAt":"2026-10-25T14:28:19.647Z","observations":24,"toolNames":["engine_overview","list_graphs","graph_schema","list_cases","get_case","explain_claim","account_network","trace_money_path","find_rings","top_hubs","connected_components","similar_accounts","search_customers","list_alerts","triage_alert","typology_guidance","run_readonly_cypher"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_6ebf6zexavye","url":"https://bankweave-api.onrender.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-22T13:28:09.294Z","auth":{"observedAt":"2026-10-22T13:28:09.835Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-22T13:28:09.853Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"onrender.com","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-21T22:04:31.000Z","validTo":"2026-12-20T23:04:28.000Z","daysToExpiry":55,"sanCount":2,"fingerprint256":"A8:8C:F8:E1:2B:2E:73:1A:48:5D:32:0C:92:B4:8E:A7:1E:0D:6B:F8:A8:38:68:B5:D1:10:DA:51:D4:A1:A4:5C"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.LSUDOKO/bankweave","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.LSUDOKO%2Fbankweave","firstSeenAt":"2026-10-19T00:22:40.804Z","fetchedAt":"2026-10-22T15:23:22.009Z","normalizedAt":"2026-10-22T15:23:22.009Z"}]},"firstSeenAt":"2026-10-19T00:22:40.804Z","updatedAt":"2026-10-25T14:31:56.772Z"}