<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ukintel</title>
    <description>The latest articles on DEV Community by ukintel (@ukintel-uk).</description>
    <link>https://dev.to/ukintel-uk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4091153%2F4bbd406f-b48e-46b3-8f75-3a0869f50b9e.png</url>
      <title>DEV Community: ukintel</title>
      <link>https://dev.to/ukintel-uk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ukintel-uk"/>
    <language>en</language>
    <item>
      <title>ukintel.uk: UK company, tender and grant data as paid JSON for agents</title>
      <dc:creator>ukintel</dc:creator>
      <pubDate>Mon, 24 Aug 2026 19:14:28 +0000</pubDate>
      <link>https://dev.to/ukintel-uk/ukinteluk-uk-company-tender-and-grant-data-as-paid-json-for-agents-4o02</link>
      <guid>https://dev.to/ukintel-uk/ukinteluk-uk-company-tender-and-grant-data-as-paid-json-for-agents-4o02</guid>
      <description>&lt;p&gt;UK public registers are free and public. Companies House, the FCA register,&lt;br&gt;
Find a Tender, Contracts Finder, GOV.UK Find a Grant. All of it is open data&lt;br&gt;
under the Open Government Licence, and none of it is usable by an AI agent&lt;br&gt;
without a human in the loop.&lt;/p&gt;

&lt;p&gt;Companies House needs an API key from a human dashboard. The FCA Register&lt;br&gt;
API needs a developer account and written permission. Find a Tender publishes an OCDS feed with no keyword&lt;br&gt;
search at all. GOV.UK Find a Grant has no API of any kind — it is HTML, and&lt;br&gt;
that is the whole interface. An agent that tries to do this itself either&lt;br&gt;
stops at a signup form or starts scraping.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;api.ukintel.uk&lt;/code&gt; is those five sources behind eleven x402 endpoints. Call it,&lt;br&gt;
get a 402 with payment terms, pay in USDC on Base, retry. No account, no API&lt;br&gt;
key, no rate-limit negotiation.&lt;/p&gt;
&lt;h3&gt;
  
  
  The arithmetic
&lt;/h3&gt;

&lt;p&gt;This is the part worth checking rather than believing.&lt;/p&gt;

&lt;p&gt;An agent answering "is this UK supplier legitimate?" by browsing does roughly&lt;br&gt;
five page-loads — Companies House search, company profile, filing history,&lt;br&gt;
officers, FCA register — about 34,000 input tokens, plus ~2,500 tokens of&lt;br&gt;
tool-call overhead and ~2,500 output tokens of reasoning.&lt;/p&gt;

&lt;p&gt;On a mid-tier model at $2/M in and $10/M out, that is &lt;strong&gt;$0.098 per attempt&lt;/strong&gt;.&lt;br&gt;
Apply a realistic 30% retry-and-blocked-page factor and it is &lt;strong&gt;~$0.13&lt;/strong&gt;,&lt;br&gt;
taking 30–90 seconds. On a frontier model at $10/M and $50/M it is &lt;strong&gt;$0.49 per&lt;br&gt;
attempt, ~$0.64 with retries&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;GET /v1/company/{number}/verdict&lt;/code&gt; costs &lt;strong&gt;$0.10&lt;/strong&gt; and returns roughly 800&lt;br&gt;
structured tokens. Reading them costs $0.0016–$0.008 depending on the model.&lt;br&gt;
Call it &lt;strong&gt;$0.102–$0.108, in about two seconds.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So: modestly cheaper on a mid-tier model, roughly &lt;strong&gt;6× cheaper on a frontier&lt;br&gt;
model&lt;/strong&gt;, and in both cases the DIY route also burns ~36,000 tokens of context&lt;br&gt;
the agent needed for the rest of its task.&lt;/p&gt;

&lt;p&gt;There is a sharper version of this. A raw Companies House filing-history JSON&lt;br&gt;
for a mid-sized company is about 60KB — around 15,000 tokens. Merely &lt;em&gt;reading&lt;/em&gt;&lt;br&gt;
that free file costs $0.030 on a mid-tier model and &lt;strong&gt;$0.150 on a frontier&lt;br&gt;
model&lt;/strong&gt;, every single time, before any thinking happens. The verdict endpoint&lt;br&gt;
costs $0.10 all-in and has already done the judgement. On frontier models the&lt;br&gt;
paid answer is cheaper than the free data.&lt;/p&gt;

&lt;p&gt;That is the entire product thesis: sell fewer tokens that say more.&lt;/p&gt;
&lt;h3&gt;
  
  
  What it actually returns
&lt;/h3&gt;

&lt;p&gt;Every endpoint returns the same envelope — &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;result&lt;/code&gt;, &lt;code&gt;verdict&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;confidence&lt;/code&gt;, &lt;code&gt;as_of&lt;/code&gt;, &lt;code&gt;sources&lt;/code&gt;, &lt;code&gt;attribution&lt;/code&gt;, &lt;code&gt;notice&lt;/code&gt;, &lt;code&gt;cost&lt;/code&gt;. Deterministic&lt;br&gt;
key order, explicit nulls rather than missing keys, no HTML anywhere, ~800&lt;br&gt;
tokens by default with &lt;code&gt;?detail=full&lt;/code&gt; to lift the cap.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;as_of&lt;/code&gt; is when &lt;em&gt;we&lt;/em&gt; fetched the underlying data, never when you asked.&lt;/p&gt;

&lt;p&gt;Here is a real grant eligibility verdict, returned free from&lt;br&gt;
&lt;code&gt;/v1/preview?wing=grants&lt;/code&gt; today — a live DfE school-based nursery capital&lt;br&gt;
grant against a showcase project profile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"verdict"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"band"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"eligible"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"flags"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"MISSING_DECLARATION"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"detail"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"net_increase_childcare_places not declared; Proposed project will result in a net increase in the number of childcare places, accounting for existing provisions on site or nearby"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"MISSING_DECLARATION"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"detail"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"landowner_permission not declared; Written permission from relevant freehold landowner to use land for nursery provision and carry out proposed works"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"REVIEW_REMAINING"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"detail"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"3 criteria cannot be auto-assessed (OPERATIONAL_BY_SEPTEMBER_2030, PROJECT_CLASSIFICATION, PREVIOUS_GRANT_ADDITIONALITY) - review them against the source page."&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rules_version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0.0"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note what it does &lt;em&gt;not&lt;/em&gt; do. It does not guess. &lt;code&gt;score: 64&lt;/code&gt; is not confidence in&lt;br&gt;
eligibility — it is the share of criteria affirmatively passed, with undeclared&lt;br&gt;
facts counting half and named in &lt;code&gt;missing[]&lt;/code&gt;. Declare them and call again and&lt;br&gt;
the score firms up. A criterion nobody can auto-assess says so and points at&lt;br&gt;
the source page.&lt;/p&gt;

&lt;p&gt;The rules are published. Any hard criterion failing means &lt;code&gt;ineligible&lt;/code&gt;, score&lt;br&gt;
0, failing codes listed. No fails means &lt;code&gt;eligible&lt;/code&gt;. Unparseable criteria means&lt;br&gt;
&lt;code&gt;uncertain&lt;/code&gt; — never a fabricated verdict.&lt;/p&gt;
&lt;h3&gt;
  
  
  Where the language model is, and is not
&lt;/h3&gt;

&lt;p&gt;A language model writes the optional two-sentence &lt;code&gt;narrative&lt;/code&gt; field on company&lt;br&gt;
verdicts, the one-sentence &lt;code&gt;emphasise&lt;/code&gt; note on top tender matches, and it&lt;br&gt;
performs a single text-to-criteria conversion once per grant at ingest time.&lt;/p&gt;

&lt;p&gt;It touches no score, on any endpoint, ever. Every 0–100 number comes from a&lt;br&gt;
deterministic rule table that ships in the docs, versioned, with each rule that&lt;br&gt;
fired named in the response. You can audit any score by hand, and you can&lt;br&gt;
disagree with a rule and re-weight it — the tender fit-score returns every&lt;br&gt;
factor's numerator &lt;em&gt;and&lt;/em&gt; denominator so you can re-weight client-side without&lt;br&gt;
calling us again.&lt;/p&gt;

&lt;p&gt;This is a deliberate constraint, not a limitation we are apologising for. A&lt;br&gt;
score an agent cannot audit is a score an agent should not act on.&lt;/p&gt;
&lt;h3&gt;
  
  
  The endpoints
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;What it answers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /v1/company/search&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.005&lt;/td&gt;
&lt;td&gt;Find a UK company by name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /v1/company/{number}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.02&lt;/td&gt;
&lt;td&gt;Structured profile, filing dates, officer counts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /v1/company/{number}/verdict&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.10&lt;/td&gt;
&lt;td&gt;0–100 legitimacy verdict, named flags&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /v1/company/{number}/fca&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.02&lt;/td&gt;
&lt;td&gt;FCA register status only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /v1/tenders/search&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.05&lt;/td&gt;
&lt;td&gt;Live UK tenders as briefs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /v1/tenders/{ocid}/brief&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.10&lt;/td&gt;
&lt;td&gt;One tender, full dossier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;POST /v1/tenders/fit-score&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.20&lt;/td&gt;
&lt;td&gt;Supplier profile → scored matches&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /v1/grants/search&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.10&lt;/td&gt;
&lt;td&gt;Live GOV.UK grant calls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;POST /v1/grants/match&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.15&lt;/td&gt;
&lt;td&gt;Project profile → eligible grants, ranked&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /v1/grants/{id}/eligibility&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.15&lt;/td&gt;
&lt;td&gt;One grant, one project, criteria table&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /v1/funders/{name}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.20&lt;/td&gt;
&lt;td&gt;Funder giving history from 360Giving&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Free, because frameworks probe before they route money: &lt;code&gt;/v1/health&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;/v1/preview&lt;/code&gt; (a real, freshly-computed sample in the exact paid shape,&lt;br&gt;
rotating daily — add &lt;code&gt;?wing=tenders&lt;/code&gt; or &lt;code&gt;?wing=grants&lt;/code&gt;), and &lt;code&gt;/v1/feedback&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Also available as an MCP server at &lt;code&gt;https://api.ukintel.uk/mcp&lt;/code&gt; (13 tools,&lt;br&gt;
listed in the official MCP registry as &lt;code&gt;uk.ukintel/ukintel&lt;/code&gt;).&lt;/p&gt;
&lt;h3&gt;
  
  
  Freshness, and what we are honest about
&lt;/h3&gt;

&lt;p&gt;Companies House is fetched live, cached six hours per company number. Find a&lt;br&gt;
Tender and Contracts Finder are indexed on a six-hour cycle — 3,590 notices&lt;br&gt;
right now; an index older than twelve hours drops &lt;code&gt;confidence&lt;/code&gt; to medium and&lt;br&gt;
raises an &lt;code&gt;INGEST_STALE&lt;/code&gt; flag rather than quietly serving old data. Find a&lt;br&gt;
Grant is a polite daily scrape — sequential, identified user-agent, robots.txt&lt;br&gt;
honoured every cycle, and if robots ever disallows us we stop and say so with&lt;br&gt;
a &lt;code&gt;SCRAPE_BLOCKED&lt;/code&gt; flag.&lt;/p&gt;

&lt;p&gt;Three things we would rather you heard from us than discovered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The FCA cross-check runs against the Register's beta API.&lt;/strong&gt; We hold
written permission from the FCA Register API team for this use (real-time
lookup, status/FRN/register-link only, attributed, nothing stored). Their
own caveat applies: the API is beta with limited support, so if it does not
answer, the endpoint degrades honestly — &lt;code&gt;fca.checked: false&lt;/code&gt;, the
financial-services rules are skipped, and no FCA claim is made. We never
assert "not regulated" from a failed lookup, only from a successful lookup
that found nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grant criteria come at two depths, and the response tells you which one
answered.&lt;/strong&gt; Every indexed grant is assessed against Find a Grant's own
published "Who can apply" and "Location" fields, so a clearly ineligible
applicant is ruled out anywhere in the corpus. Most grants also have their
full eligibility text parsed into a criteria table — thresholds,
declarations and all — and &lt;strong&gt;only a grant at that depth can come back
&lt;code&gt;eligible&lt;/code&gt;&lt;/strong&gt;. A listing-only assessment is flagged &lt;code&gt;PARTIAL_CRITERIA&lt;/code&gt; and
stays &lt;code&gt;uncertain&lt;/code&gt; rather than being talked up, because those two fields are
not the whole rulebook. &lt;code&gt;result.criteria_provenance.complete&lt;/code&gt; says which you
got. Coverage is public rather than a number we are asking you to trust:
&lt;code&gt;GET /v1/health&lt;/code&gt; reports &lt;code&gt;grants_index.with_criteria&lt;/code&gt; and
&lt;code&gt;grants_index.awaiting_criteria&lt;/code&gt; against &lt;code&gt;grants_index.grants&lt;/code&gt; (today:
109 of 120 at full depth).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tender buyer-history scores a neutral 8/15 for every buyer&lt;/strong&gt; in v1. It is
flagged in the response and documented in the rules table rather than
silently invented. Buyer award-history is this wing's first planned upgrade.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CPV codes are &lt;code&gt;null&lt;/code&gt; when the source release carries none. We report the&lt;br&gt;
register; we do not guess.&lt;/p&gt;
&lt;h3&gt;
  
  
  Licensing
&lt;/h3&gt;

&lt;p&gt;Companies House, Find a Tender, Contracts Finder and Find a Grant are Open&lt;br&gt;
Government Licence v3.0, attributed in every response. 360Giving publisher&lt;br&gt;
datasets carry mixed open licences — the funder corpus aggregates 516 of 874&lt;br&gt;
published datasets across 229 funders, CC-BY-SA datasets are excluded from the&lt;br&gt;
numbers entirely by policy, exclusions are counted in the response, and every&lt;br&gt;
recent-award row carries its own source licence. Dossiers describe the covered&lt;br&gt;
corpus, never the whole sector.&lt;/p&gt;

&lt;p&gt;Officer names and dates of birth are deliberately not returned. Officer counts&lt;br&gt;
and resignation churn are.&lt;/p&gt;
&lt;h3&gt;
  
  
  Try it without paying
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.ukintel.uk/v1/preview
curl https://api.ukintel.uk/v1/preview?wing&lt;span class="o"&gt;=&lt;/span&gt;tenders
curl https://api.ukintel.uk/v1/preview?wing&lt;span class="o"&gt;=&lt;/span&gt;grants
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Real data, freshly computed, rotating daily, in the exact shape the paid&lt;br&gt;
endpoints return.&lt;/p&gt;

&lt;p&gt;If you use Claude Code, one line connects all 13 tools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http ukintel https://api.ukintel.uk/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Machine docs: &lt;code&gt;/llms.txt&lt;/code&gt; · &lt;code&gt;/openapi.json&lt;/code&gt; · &lt;code&gt;/.well-known/x402&lt;/code&gt; ·&lt;br&gt;
&lt;code&gt;/.well-known/agent-card.json&lt;/code&gt; · MCP at &lt;code&gt;/mcp&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Something missing? &lt;code&gt;POST /v1/feedback&lt;/code&gt; with &lt;code&gt;{"message": "..."}&lt;/code&gt; is free, read&lt;br&gt;
by a human, and is the fastest way to get a field added. Or email&lt;br&gt;
&lt;code&gt;hello@ukintel.uk&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Information, not advice.&lt;/strong&gt; These are public register facts and rules-based&lt;br&gt;
scores. A fit-score means fit, never "you will win". A grant eligibility&lt;br&gt;
verdict means the stated criteria pass, never "you will get this grant" —&lt;br&gt;
eligibility is not award, and the funder's assessment decides.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>x402</category>
      <category>opendata</category>
    </item>
  </channel>
</rss>
