<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Johto Data]]></title><description><![CDATA[Johto Data]]></description><link>https://johtodata.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Wed, 28 Oct 2026 04:43:09 GMT</lastBuildDate><atom:link href="https://johtodata.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[KYB and sanctions screening from an MCP client for under a cent a call]]></title><description><![CDATA[Disclosure: this post is written by Johto Data, the maker of the APIs and Store Actors shown here. Johto Data is a data provider. Two of its pay-per-call…]]></description><link>https://johtodata.hashnode.dev/kyb-and-sanctions-screening-from-an-mcp-client-for-under-a-cent-a-call</link><guid isPermaLink="true">https://johtodata.hashnode.dev/kyb-and-sanctions-screening-from-an-mcp-client-for-under-a-cent-a-call</guid><category><![CDATA[mcp]]></category><category><![CDATA[api]]></category><category><![CDATA[AI]]></category><category><![CDATA[Security]]></category><dc:creator><![CDATA[Johto Data]]></dc:creator><pubDate>Thu, 22 Oct 2026 15:51:57 GMT</pubDate><content:encoded><![CDATA[<p><em>Disclosure: this post is written by Johto Data, the maker of the APIs and Store Actors shown here.</em></p>
<p>Johto Data is a data provider. Two of its pay-per-call routes cover the first checks on a new counterparty: company verification (KYB) at $0.0029 a call and name screening against the OFAC SDN list and the UK Sanctions List at $0.0025 a call. Both are MCP tools and plain HTTP routes, and both have a free <code>?sample=1</code>.</p>
<h2>Try it free</h2>
<pre><code class="language-bash">curl -s "https://johto-x402-api.johtodata.workers.dev/v1/kyb?sample=1"
curl -s "https://johto-x402-api.johtodata.workers.dev/v1/sanctions-screen?sample=1"
</code></pre>
<p>The sample is a fixed stored set, not a live lookup. Both returned 200 at 2026-10-22T15:40:05Z.</p>
<h3>KYB sample (trimmed)</h3>
<pre><code class="language-json">{
  "source": "gleif",
  "matchedBy": "query:Tesla, Inc.",
  "name": "TESLA, INC.",
  "identifiers": {
    "lei": "54930043XZGB27CTOV49",
    "companyNumber": "0805587591",
    "registrationAuthorityId": "RA000637",
    "cik": null,
    "ticker": null,
    "bic": ["TSLAUS66XXX"]
  },
  "status": "ACTIVE",
  "jurisdiction": "US-TX",
  "headquartersAddress": {"text": "1 Tesla Road, Austin, US-TX, 78725, US"},
  "lei": {
    "registrationStatus": "ISSUED",
    "entityStatus": "ACTIVE",
    "lastUpdateDate": "2026-05-04",
    "nextRenewalDate": "2027-05-14",
    "corroborationLevel": "FULLY_CORROBORATED",
    "parent": {"lei": null, "name": null, "reportingException": "NO_KNOWN_PERSON"}
  },
  "sourceUrl": "https://search.gleif.org/#/record/54930043XZGB27CTOV49",
  "checkedAt": "2026-10-22T09:49:12.366Z"
}
</code></pre>
<p>Each row also carries the registered address, incorporation date, SIC code, state of incorporation and last SEC filing date where they exist. A call returns up to 10 rows. Query by <code>name</code>, <code>lei</code>, <code>ticker</code> or <code>cik</code>, with an optional ISO-2 <code>country</code>.</p>
<h3>Sanctions screening sample (trimmed)</h3>
<pre><code class="language-json">{
  "verdict": "MATCH",
  "query": "bank rossiya",
  "filters": {"type": "any", "threshold": 0.85, "limit": 3},
  "matchCount": 4,
  "matches": [
    {"name": "BANK ROSSIYA", "list": "OFAC_SDN", "listId": "16681", "entityType": "entity", "programs": ["UKRAINE-EO13661"], "score": 1, "matchType": "exact"},
    {"name": "Bank Rossiya", "list": "UK_SANCTIONS_LIST", "listId": "RUS0232", "entityType": "entity", "programs": ["The Russia (Sanctions) (EU Exit) Regulations 2019"], "score": 1, "matchType": "exact"},
    {"name": "ROSSITA BANK", "list": "OFAC_SDN", "listId": "51760", "entityType": "entity", "programs": ["RUSSIA-EO14024"], "score": 0.964, "matchType": "fuzzy"}
  ],
  "listsChecked": ["OFAC_SDN", "UK_SANCTIONS_LIST"],
  "listsAsOf": {
    "ofacSdn": {"asOf": "2026-10-21", "entries": 19471},
    "ukSanctionsList": {"asOf": "2026-10-16", "entries": 6408, "license": "Open Government Licence v3.0"}
  },
  "attribution": "Contains public sector information licensed under the Open Government Licence v3.0.",
  "note": "A screening aid, not legal advice."
}
</code></pre>
<p>The verdict is MATCH, POSSIBLE_MATCH or CLEAR. Matching handles typos, word order and aliases, and each match shows its score and match type. Optional filters: <code>type</code> (person or entity), <code>dob</code>, <code>country</code>, <code>threshold</code>, <code>limit</code>. OFAC entries carry date of birth and nationality where listed. UK Sanctions List entries are names only.</p>
<h2>From an MCP client</h2>
<p>Add the server, then call the tools <code>kyb</code> and <code>sanctions-screen</code>. The server is in the Official MCP Registry as <code>com.johtodata/johto-data</code>.</p>
<pre><code class="language-json">{"mcpServers": {"johto-data": {"url": "https://johto-x402-api.johtodata.workers.dev/mcp"}}}
</code></pre>
<pre><code class="language-bash">curl -s -X POST https://johto-x402-api.johtodata.workers.dev/mcp \
  -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"sanctions-screen","arguments":{"sample":true}}}'
</code></pre>
<p>With <code>sample: true</code> the tool returns the free sample. With real arguments, for example <code>{"name": "Bank Rossiya"}</code>, it returns the x402 terms (price, USDC on Base, eip155:8453) and the exact URL to pay. Any x402 client pays and retries:</p>
<pre><code class="language-bash">curl -i "https://johto-x402-api.johtodata.workers.dev/v1/kyb?name=Tesla,%20Inc."
curl -i "https://johto-x402-api.johtodata.workers.dev/v1/sanctions-screen?name=Bank%20Rossiya&amp;limit=3"
</code></pre>
<p>Without payment both answer <code>402 Payment Required</code>. Invalid input returns 400 and is not charged.</p>
<h2>Price</h2>
<table>
<thead>
<tr>
<th>Route</th>
<th>Johto Data</th>
<th>Others</th>
</tr>
</thead>
<tbody><tr>
<td>kyb</td>
<td>$0.0029 a call, up to 10 rows</td>
<td>Citiview $0.003, agent402 $0.005</td>
</tr>
<tr>
<td>sanctions-screen</td>
<td>$0.0025 a call</td>
<td>Pocket $0.005 (Pocket covers more lists: OFAC, EU, UN and UK)</td>
</tr>
</tbody></table>
<h2>Scope and caveats</h2>
<ul>
<li>sanctions-screen checks the OFAC SDN list and the UK Sanctions List only. It is a screening aid, not legal advice. Verify any match against the official OFAC and UK lists before acting.</li>
<li>kyb is company-level only: no data on people, credit scores or financial statements. Johto Data is independent and not affiliated with or endorsed by GLEIF.</li>
</ul>
<h2>Also on Apify Store</h2>
<p>If you run agents on Apify, the same company-level data is available as Store Actors with a $0.00005 start fee plus a per-result price:</p>
<ul>
<li><a href="https://apify.com/johto.data/company-kyb-verification">Company KYB verification</a>, $0.0004 a company.</li>
<li><a href="https://apify.com/johto.data/us-new-business-filings-leads">US new business filings leads</a>, $0.0006 a filing.</li>
<li><a href="https://apify.com/johto.data/us-city-building-permits-leads">US city building permits leads</a>, $0.0018 a permit.</li>
</ul>
<h2>Sources and credits</h2>
<ul>
<li>UK Sanctions List: Contains public sector information licensed under the Open Government Licence v3.0.</li>
<li>OFAC SDN list: U.S. Department of the Treasury.</li>
<li>Company records: GLEIF LEI data and SEC EDGAR.</li>
</ul>
<p>Johto Data: <a href="https://johtodata.com">https://johtodata.com</a>. MCP Registry entry: <a href="https://registry.modelcontextprotocol.io/v0/servers?search=com.johtodata/johto-data">https://registry.modelcontextprotocol.io/v0/servers?search=com.johtodata/johto-data</a></p>
]]></content:encoded></item><item><title><![CDATA[Query UK and French tenders and Australian contract notices from an AI agent for under a cent]]></title><description><![CDATA[Disclosure: this post is written by Johto Data, the maker of the APIs and Store Actors shown here. Johto Data is a data provider. Three of its pay-per-call…]]></description><link>https://johtodata.hashnode.dev/query-uk-and-french-tenders-and-australian-contract-notices-from-an-ai-agent-for-under-a-cent</link><guid isPermaLink="true">https://johtodata.hashnode.dev/query-uk-and-french-tenders-and-australian-contract-notices-from-an-ai-agent-for-under-a-cent</guid><category><![CDATA[mcp]]></category><category><![CDATA[api]]></category><category><![CDATA[AI]]></category><category><![CDATA[procurement ]]></category><dc:creator><![CDATA[Johto Data]]></dc:creator><pubDate>Thu, 22 Oct 2026 15:51:13 GMT</pubDate><content:encoded><![CDATA[<p><em>Disclosure: this post is written by Johto Data, the maker of the APIs and Store Actors shown here.</em></p>
<p>Johto Data is a data provider. Three of its pay-per-call routes return procurement notices as one flat JSON shape: UK tenders ($0.003 a call), French tenders ($0.006) and Australian contract notices ($0.0035). Each call returns up to 25 notices. Every route has a free <code>?sample=1</code>.</p>
<h2>Try it free</h2>
<pre><code class="language-bash">curl -s "https://johto-x402-api.johtodata.workers.dev/v1/uk-tenders?sample=1"
curl -s "https://johto-x402-api.johtodata.workers.dev/v1/fr-tenders?sample=1"
curl -s "https://johto-x402-api.johtodata.workers.dev/v1/au-contracts?sample=1"
</code></pre>
<p>First UK record from the sample (fetched 2026-10-22T15:10:48Z):</p>
<pre><code class="language-json">{
  "notice_id": "FTS-099867-2026",
  "source": "uk-fts",
  "title": "Fostering and Continuing Care Services 0924",
  "buyer_name": "Scotland Excel",
  "buyer_country": "GB",
  "published_date": "2026-10-22",
  "deadline_date": "2026-11-18T12:00:00Z",
  "value_amount": 345000000,
  "value_currency": "GBP",
  "categories": ["85300000", "85310000"],
  "category_scheme": "CPV",
  "procedure_type": "Open procedure",
  "notice_type": "tender",
  "notice_url": "https://www.find-tender.service.gov.uk/Notice/099867-2026",
  "data_as_of": "2026-10-22T14:41:56Z"
}
</code></pre>
<p>The French and Australian routes return the same 15 keys. French notices carry BOAMP descriptors instead of CPV codes and no value. Australian notices carry UNSPSC codes and the contract value in AUD.</p>
<h2>Live calls</h2>
<pre><code class="language-bash"># UK: Find a Tender (default) or Contracts Finder, published since a date
curl -i "https://johto-x402-api.johtodata.workers.dev/v1/uk-tenders?feed=fts&amp;since=2026-10-20&amp;limit=25"

# France: BOAMP by département and title keyword
curl -i "https://johto-x402-api.johtodata.workers.dev/v1/fr-tenders?dept=75&amp;q=nettoyage&amp;limit=25"

# Australia: AusTender contract notices in a date range
curl -i "https://johto-x402-api.johtodata.workers.dev/v1/au-contracts?since=2026-10-15&amp;until=2026-10-22"
</code></pre>
<p>Without payment each call answers <code>402 Payment Required</code> with x402 terms (USDC on Base, eip155:8453). Any x402 client pays and retries. A call that matches nothing, or where the source fails, is not charged. Invalid input returns 400 and is not charged.</p>
<h2>From an MCP client</h2>
<p>The same routes are MCP tools named <code>uk-tenders</code>, <code>fr-tenders</code> and <code>au-contracts</code> on <code>https://johto-x402-api.johtodata.workers.dev/mcp</code> (Official MCP Registry: <code>com.johtodata/johto-data</code>).</p>
<pre><code class="language-json">{"mcpServers": {"johto-data": {"url": "https://johto-x402-api.johtodata.workers.dev/mcp"}}}
</code></pre>
<pre><code class="language-bash">curl -s -X POST https://johto-x402-api.johtodata.workers.dev/mcp \
  -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"uk-tenders","arguments":{"sample":true}}}'
</code></pre>
<p><code>sample: true</code> returns the free sample. Without it, the tool returns the x402 terms and the exact URL to pay.</p>
<h2>Scope</h2>
<ul>
<li>UK: Find a Tender and Contracts Finder notices. Contact names, emails and phone numbers are not included.</li>
<li>France: BOAMP notices.</li>
<li>Australia: awarded contract notices only, not open approach-to-market listings. Supplier names are not included.</li>
</ul>
<h2>Also on Apify Store</h2>
<p>If you run agents on Apify, the same company-level data is available as Store Actors with a $0.00005 start fee plus a per-result price:</p>
<ul>
<li><a href="https://apify.com/johto.data/company-kyb-verification">Company KYB verification</a>, $0.0004 a company.</li>
<li><a href="https://apify.com/johto.data/us-new-business-filings-leads">US new business filings leads</a>, $0.0006 a filing.</li>
<li><a href="https://apify.com/johto.data/us-city-building-permits-leads">US city building permits leads</a>, $0.0018 a permit.</li>
</ul>
<h2>Sources and credits</h2>
<ul>
<li>UK: Contains public sector information licensed under the Open Government Licence v3.0.</li>
<li>France: BOAMP, DILA, Licence Ouverte / Open Licence.</li>
<li>Australia: AusTender, Department of Finance, CC BY 3.0 AU.</li>
</ul>
<p>Johto Data: <a href="https://johtodata.com">https://johtodata.com</a>. MCP Registry entry: <a href="https://registry.modelcontextprotocol.io/v0/servers?search=com.johtodata/johto-data">https://registry.modelcontextprotocol.io/v0/servers?search=com.johtodata/johto-data</a></p>
]]></content:encoded></item></channel></rss>