Cookbook
Task-oriented recipes. Each one is a self-contained query — copy, change the variables, run.
| Recipe | Use it when… |
|---|---|
| Inspect an Entity | You have an ID and want to see everything attached |
| Find Entities by Name | You know roughly what it's called, but not its ID |
| List Entities of a Type in a Space | "Show me all the Projects in the AI space" |
| Look Up a Property or Type Entity | You need a Property/Type ID by name and don't want a wrong-typed match |
| Paginate Large Result Sets | The result is bigger than one page |
| Filter Entities by Relation | "Show me everything backed by Stability AI" |
| Traverse Relations (Outbound + Backlinks) | You're walking the graph one hop at a time |
| Query a Space's Metadata | Before publishing, or to understand a space's governance |
| Deduplicate Before Ingestion | You're bulk-publishing and don't want to create duplicates on every re-run |
| Bulk Lookup by Name List | You have N names → want N IDs in one round-trip |
| Multi-Hop Traversal | Walk the graph 2+ edges in a single query (e.g. "projects sharing this license") |
| Search Scoped to a Single Space | Substring search, but only within your target space |
| Get All Properties of a Type | "What fields can I publish on a Project?" |
| DAO Governance: Members, Editors, Proposals | You're publishing to a DAO space and need to know who can vote, what's open, what passed |
| Page + Blocks of a Space | Render the space's homepage — text blocks, data blocks, images, ordered by position |
| All Value Types — GRC-20 Reference | Read every typed scalar (text, integer, date, decimal, embedding, point, etc.) from a Value |
| Read an Entity's Edit History | Who changed this, when, what was the previous value? Time-travel via valueVersions |
Conventions used in these recipes
- All queries use named operations and variables (e.g.
query Foo($id: UUID!)) — never raw string interpolation. Always parameterize. - All examples are tested against testnet at
https://testnet-api.geobrowser.io/graphql— copy/paste should just work. - Type IDs in examples come from the SDK's
SystemIdsandContentIds. Don't hardcode UUIDs in your own code; import them from@geoprotocol/geo-sdk.
Missing a recipe?
If there's a query pattern you keep needing and don't see here, open an issue or PR. The recipes that get added are the ones that prevent real bugs.