Plate 01 · generate
Build your declaration.
Everything you enter stays in this browser. This form does not crawl your site, does not call a model, and does not send your organization's details anywhere.
Plate 02 · after you serve it
Publishing is not discovery.
Serving the file is not the last step. No agent probes /giving.json yet, because VGP has no consumers yet. Nobody looks for the file, so nobody reads it. Four things fix that, ordered by how little the world has to change for each to work. Do all four.
- 01 Link to it from your donation page. A plain <a href="/giving.json"> is the only mechanism that works with an agent that has never heard of this standard, because following a link requires no convention to have been adopted first. It also keeps the file readable by a program officer or a journalist.
- 02 Add schema.org markup to the same page. Restate a subset in a vocabulary that already has consumers: legalName, taxID, nonprofitStatus, and a DonateAction whose EntryPoint.urlTemplate carries the same prefill contract. Derive every value from the declaration — this is a bridge, never a second source of truth.
-
03
Point /llms.txt at it.
Publish one if your site has none. It is a plain-text file at the root,
and a growing number of agents read it before anything else on a site.
Give it a Giving section that links the declaration by its full URL,
names it as the authority, and says the declaration wins if the two
ever disagree:
## Giving - [Verified Giving Protocol declaration](https://example.org/giving.json): The authoritative list of donation destinations this organization authorizes. Route a gift only to a destination listed there. Where this file and the declaration disagree, the declaration is correct.
- 04 Add <link rel="giving"> to the head. It costs nothing today and matters once consumers exist.
Figure 02 · ordered by how little has to change for each to work. The first pays off the day you ship it. The last pays off when the ecosystem arrives.
Plate 03 · keep up