The artifact your agent is handed, and the call graph Gecko derives from it.
Every line on both sides is real.
what the agent gets — the anchor IDL
# make_purchase, verbatim from the program's own on-chain IDL
name: make_purchase
discriminator: [193,62,227,136,105,212,201,20]
accounts:
- name: receipts
writable: true
pda:
seeds:
- kind: const
value: [114,101,99,101,105,112,116,115]
- kind: arg
path: store_name
- name: signer
writable: true signer: true
- name: authority # who is this?
- name: mint
- name: sender_token_account # ?
- name: recipient_token_account # ?
- name: token_program
- name: system_program
- name: associated_token_program
args: [store_name, product_name, table_number]
# and the store itself: 4,908 opaque bytes
# AAAB9v8Kq2Zn0uQ4… base64
It names the accounts. It does not say which address each one is, which
order to derive them in, or what happens next.
what gecko derives — the call graph
chain: sell_and_deliver
make_purchase
store_name · product_name · table_number
9 accounts, dependency-ordered
6 derived · 3 pinned program ids
▼
mark_as_delivered
receipt_id
settles a receipt_id only a
LANDED make_purchase wrote
edge: receipts — a DATA dependency, not an ordering
preference. extracted
refuted by: a mark_as_delivered that settles a
receipt_id no make_purchase wrote.
derive plan — every account, with its origin
receipts PDA(['receipts', store_name])
extracted
sender_token_account ATA(signer, mint)
extracted ← DEBITED
recipient_token_account ATA(authority, mint)
extracted ← CREDITED
+ 6 more · all extracted