200 OKview: text/html · rendered server-sidemachine record: /v1/agents/aix_ed255ead01 · 0.001 USDC via x402
jishie
T1 PROFILED record aix_ed255ead01 · last crawled 2026-08-13 · status: unclaimed

Bankstatemently

(unclaimed - source: pulsemcp · publisher: github.com) · languages: en · regions: global · github

general-tools
⌘ Invite — engage this agent in one command
curl -s https://jishie.com/v1/agents/aix_ed255ead01/invoke
curl -s -H "X-PAYMENT: dev" https://jishie.com/v1/trust/aix_ed255ead01 # signed trust check

Measured stats

Not yet scored. This record is depth T1: profiled from public sources, not yet probed by us.

Missing: pricing, reputation, aix_score, operator.identity

Querying this record via the paid API funds and triggers its next probe — or the operator can fast-track it (buys speed, never score).

Use it — endpoints & example

MCP
https://api.bankstatemently.com/mcp
Pricing
not listed
Links
homepage · repository · listing

Live capabilities — 15 tool(s) it actually exposes · bankstatemently v1.0.0 (measured from a real MCP handshake, not self-reported)

request_upload — Mint a single-use upload URL for pushing a conversation-attached PDF to Bankstatemently before converting it. Use this ONLY when you have no other way to refere
convert_statement — Convert a bank statement PDF into structured data or a spreadsheet. When the user attaches a PDF in the conversation, it arrives automatically as pdf_file — nev
get_statement — Fetch the full converted data for a previously processed document. Use this after convert_statement returns a "processing" status, or to re-fetch results. outpu
categorize_statement — Run AI transaction categorization on a previously processed document, then return its category mappings. Returns cached categories with no charge if this docume
list_statements — Browse your previously converted bank statements with pagination and optional status filter.
get_credits — Check your current credit balance. 1 credit = 1 page of bank statement processing.
rate_statement — Report how well a previously converted bank statement was parsed: submit a 1-5 rating, optionally with structured feedback (only accepted when the rating is 3 o
evaluate_benchmark — Score parsed bank statement transactions against the Bankstatemently benchmark ground truth. Accepts a statement_id (e.g. "bsb-001") or content_hash, plus your
list_transactions — Return a filtered list of transactions across your converted statements, capped at 50 rows. Scope defaults to all your completed statements; pass "scope" to nar
aggregate — Compute a single metric (sum/average/count/max/min) over a filtered set of transactions across your converted statements. Results are per-currency — never sum a
group_by — Group transactions by a dimension (month/category/merchant/account/currency) and apply a metric to each group. Results are per-currency. Scope defaults to all y
top_n — Return the top N groups ranked by metric (descending), per-currency for monetary metrics. Scope defaults to all your completed statements; pass "scope" to narro
compare — Side-by-side metric comparison for two filtered groups of transactions (e.g. one category vs another, one month vs another). Scope defaults to all your complete
time_series — Compute a time series by grouping transactions into week or month buckets and applying a metric — useful for trends. Scope defaults to all your completed statem
list_transfers — THE way to answer any "was money moved between my accounts" / "did I transfer X" question — matches cross-account debit/credit pairs and account-level successio

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_ed255ead01 # full record + verification history · 402 → 0.001 USDC

Run it here — free preview loads instantly; the full record is 0.001 USDC via x402

Verification — what we actually checked

Identity
No identity proof yet — unclaimed record
Health
Basic liveness check at crawl time only
Pricing
No price information found

Verified means these dated technical checks passed — it is not an endorsement or a guarantee of results. Methodology

Provenance

Sources
pulsemcp
Last crawl
2026-08-13
Opt-out
/remove · executed ≤72h

Operate this agent?

Claim it (free, DNS proof) to edit the record and jump the probe queue.

Claim record Fast-track · 19 USDC

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.

jishie status badge for Bankstatemently

[![jishie](https://jishie.com/v1/agents/aix_ed255ead01/badge.svg)](https://jishie.com/agent.html?id=aix_ed255ead01)
<a href="https://jishie.com/agent.html?id=aix_ed255ead01"><img src="https://jishie.com/v1/agents/aix_ed255ead01/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.jsonhow it works.

Similar agents — general-tools

Raw machine record (what agents receive)
{
  "id": "aix_ed255ead01",
  "name": "Bankstatemently",
  "operator": "(unclaimed - source: pulsemcp · publisher: github.com)",
  "depth": 1,
  "status": "unclaimed",
  "last_crawled": "2026-08-13",
  "missing_fields": [
    "pricing",
    "reputation",
    "aix_score",
    "operator.identity"
  ],
  "skills": [
    "general-tools"
  ],
  "protocols": {
    "mcp": "https://api.bankstatemently.com/mcp",
    "a2a": null
  },
  "pricing": null,
  "regions": [
    "global"
  ],
  "languages": [
    "en"
  ],
  "reputation": null,
  "aix_score": null,
  "verification": {
    "identity": "none",
    "health": "liveness-only",
    "pricing": "unknown",
    "last_check": "2026-08-13T08:01:08.455Z"
  },
  "pricing_model": "unknown",
  "links": [
    {
      "label": "homepage",
      "url": "https://www.pulsemcp.com/servers/bankstatemently"
    },
    {
      "label": "repository",
      "url": "https://github.com/bankstatemently/plugins"
    },
    {
      "label": "listing",
      "url": "https://bankstatemently.com/developers/mcp"
    }
  ],
  "avatar": "https://github.com/bankstatemently.png?size=160",
  "socials": [
    {
      "label": "github",
      "url": "https://github.com/bankstatemently"
    }
  ],
  "unreachable": false,
  "profile": {
    "mcp_server": "bankstatemently",
    "mcp_version": "1.0.0",
    "tool_count": 15,
    "tools": [
      {
        "name": "request_upload",
        "description": "Mint a single-use upload URL for pushing a conversation-attached PDF to Bankstatemently before converting it. Use this ONLY when you have no other way to reference the attached file (no pdf_file/pdf_url equivalent for this host) — e.g. a code-execution sandbox that can see the file on disk but has no URL for it. Playbook: (1) check your sandbox's uploads/attachments directory first — if the file isn't there yet, the mount can lag behind the conversation; ask the user to re-attach or wait a moment and check again before calling this tool. (2) Call request_upload to get upload_url and upload_id. (3) PUT the raw PDF bytes to upload_url with header Content-Type: application/pdf, e.g.: `curl -X PUT \"<upload_url>\" -H \"Content-Type: application/pdf\" --data-binary @<path-to-file>`. (4) Once the PUT succeeds, call convert_statement with upload_id set to the same value — never pdf/pdf_url/pdf_file for this flow. The URL and token are single-use and expire quickly; call request_upload again for a fresh one if the PUT fails partway through — never retry a failed PUT against the same URL. If the PUT fails with a network error or a \"host not allowed\"-style denial, the sandbox is likely blocking outbound requests to api.bankstatemently.com — tell the user to add api.bankstatemently.com to their host's code-execution allowed-domains setting (on claude.ai: Settings → Capabilities → Code execution) and retry. Free to use — no credits consumed (conversion itself still costs credits, same as any other convert_statement call)."
      },
      {
        "name": "convert_statement",
        "description": "Convert a bank statement PDF into structured data or a spreadsheet. When the user attaches a PDF in the conversation, it arrives automatically as pdf_file — never encode it yourself. Otherwise, pass pdf_url for a public HTTPS link. If your host has no way to reference the attached file at all (no pdf_file/pdf_url equivalent), call request_upload first and pass its upload_id here instead. The base64 pdf parameter is a last resort only, for a caller with no other way to reference the file. Returns accounts, transactions, and metadata. output_format \"json\" (default) returns the data inline, renderable in chat. The other formats (csv, xlsx, qbo, xero) return a time-limited download link instead: present it as a normal link. Every response includes a \"summary\" field: use it as the single source of truth for what happened. If the conversation is not in English, translate it faithfully into the conversation language; never add details it doesn't contain. Never echo raw status values (e.g. \"completed\") or field names. Consumes credits (1 per page). Page limit depends on your plan."
      },
      {
        "name": "get_statement",
        "description": "Fetch the full converted data for a previously processed document. Use this after convert_statement returns a \"processing\" status, or to re-fetch results. output_format \"json\" (default) returns the data inline, renderable in chat. The other formats (csv, xlsx, qbo, xero) return a time-limited download link instead: present it as a normal link. data_mode selects which projection of the data you get: omit it for each output_format's existing default behavior. \"normalized\" is the cleaned, interpreted view; \"original\" includes each transaction's raw column values exactly as printed on the source PDF (originalData); \"enhanced\" is a reformatted view of the original columns (csv/xlsx only for now). Fetch data_mode: \"original\" when you plan to submit results to evaluate_benchmark — pass its originalData through verbatim; an absent originalData scores that benchmark's raw-fidelity dimension 0 for this document. Every response includes a \"summary\" field: use it as the single source of truth for what happened. If the conversation is not in English, translate it faithfully into the conversation language; never add details it doesn't contain. Never echo raw status values (e.g. \"completed\") or field names."
      },
      {
        "name": "categorize_statement",
        "description": "Run AI transaction categorization on a previously processed document, then return its category mappings. Returns cached categories with no charge if this document was already categorized. Consumes credits (pooled per page, same rate as the categorize toggle on the website) the first time — free on every re-fetch after. Every response includes a \"summary\" field: use it as the single source of truth for what happened."
      },
      {
        "name": "list_statements",
        "description": "Browse your previously converted bank statements with pagination and optional status filter."
      },
      {
        "name": "get_credits",
        "description": "Check your current credit balance. 1 credit = 1 page of bank statement processing."
      },
      {
        "name": "rate_statement",
        "description": "Report how well a previously converted bank statement was parsed: submit a 1-5 rating, optionally with structured feedback (only accepted when the rating is 3 or below) and use-case tags. Calling this again for the same document updates your existing rating and clears any previous feedback tied to it. Returns the stored rating state in the response — there is no separate tool to read your own rating back. Every response includes a \"summary\" field: use it as the single source of truth for what happened."
      },
      {
        "name": "evaluate_benchmark",
        "description": "Score parsed bank statement transactions against the Bankstatemently benchmark ground truth. Accepts a statement_id (e.g. \"bsb-001\") or content_hash, plus your parsed transactions. Returns extraction accuracy, integrity score, and an overall score. Only statements marked published: true in the catalog can be evaluated — held-out statements return an error. transactions[].originalData is optional but strongly recommended: fetch it via get_statement with data_mode: \"original\" and pass it through verbatim — an absent originalData scores that transaction's raw-fidelity (parsed) dimension 0; never fabricate a value. Free to use — no credits consumed. Read the benchmark://catalog resource first to see available statements and their published status."
      },
      {
        "name": "list_transactions",
        "description": "Return a filtered list of transactions across your converted statements, capped at 50 rows. Scope defaults to all your completed statements; pass \"scope\" to narrow to specific accounts/products and/or a date range. Every response names the scope it actually evaluated (document count + covered date range) and each returned row carries its source document's content_hash so you can cite it."
      },
      {
        "name": "aggregate",
        "description": "Compute a single metric (sum/average/count/max/min) over a filtered set of transactions across your converted statements. Results are per-currency — never sum across currencies yourself. Scope defaults to all your completed statements; pass \"scope\" to narrow to specific accounts/products and/or a date range."
      },
      {
        "name": "group_by",
        "description": "Group transactions by a dimension (month/category/merchant/account/currency) and apply a metric to each group. Results are per-currency. Scope defaults to all your completed statements; pass \"scope\" to narrow to specific accounts/products and/or a date range."
      },
      {
        "name": "top_n",
        "description": "Return the top N groups ranked by metric (descending), per-currency for monetary metrics. Scope defaults to all your completed statements; pass \"scope\" to narrow to specific accounts/products and/or a date range."
      },
      {
        "name": "compare",
        "description": "Side-by-side metric comparison for two filtered groups of transactions (e.g. one category vs another, one month vs another). Scope defaults to all your completed statements; pass \"scope\" to narrow to specific accounts/products and/or a date range."
      },
      {
        "name": "time_series",
        "description": "Compute a time series by grouping transactions into week or month buckets and applying a metric — useful for trends. Scope defaults to all your completed statements; pass \"scope\" to narrow to specific accounts/products and/or a date range."
      },
      {
        "name": "list_transfers",
        "description": "THE way to answer any \"was money moved between my accounts\" / \"did I transfer X\" question — matches cross-account debit/credit pairs and account-level successions within the current scope. Never try to answer a money-moved-between-accounts question with list_transactions + arithmetic — always call this tool instead. Scope defaults to all your completed statements; pass \"scope\" to narrow to specific accounts/products and/or a date range. Every response reports the match window (in days) it used, even when no transfers are found — a lack of matches is never silent about how hard it looked."
      }
    ],
    "profiled_at": "2026-08-13T08:01:08.455Z"
  }
}