{"address":"8g5hMx6AwTUFCrKwuaCfDY468qE4bbHiw8BvdiepUJdo","metadata":{"name":"agentvault","version":"0.1.0","spec":"0.1.0","description":"AgentVault — Treasury & budget protocol for AI agents on Solana"},"docs":["AgentVault: Treasury & budget protocol for autonomous AI agents on Solana.","","Organizations deploy a USDC vault, register AI agents with per-task","spending limits, and get on-chain receipts for every payment.","Kill switch enables instant revocation of rogue agent access.","","Architecture:","- Team PDA stores the vault admin's agent roster + config","- Vault PDA holds the USDC treasury (token account owned by program)","- PaymentRecord PDAs track every agent payment on-chain (receipts)","- Milestone PDAs enable deliverable-gated payments"],"instructions":[{"name":"add_member","docs":["Register an AI agent to the vault. Up to 15 agents per vault.","`role` is a label like \"Research Agent\", \"Trading Bot\", etc.","`wallet` is the agent's Solana wallet."],"discriminator":[13,116,123,130,126,198,57,34],"accounts":[{"name":"creator","writable":true,"signer":true},{"name":"team","writable":true,"pda":{"seeds":[{"kind":"const","value":[116,101,97,109]},{"kind":"account","path":"creator"}]}},{"name":"member","writable":true,"pda":{"seeds":[{"kind":"const","value":[109,101,109,98,101,114]},{"kind":"account","path":"team"},{"kind":"arg","path":"wallet"}]}},{"name":"authority","relations":["team"]},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"wallet","type":"pubkey"},{"name":"role","type":"string"},{"name":"rate_per_delivery","type":"u64"}]},{"name":"approve_and_pay","docs":["Vault admin approves the deliverable → funds auto-release to agent.","This is the core payment instruction. Creates an on-chain receipt."],"discriminator":[17,171,252,175,75,86,76,96],"accounts":[{"name":"creator","writable":true,"signer":true},{"name":"team","writable":true,"pda":{"seeds":[{"kind":"const","value":[116,101,97,109]},{"kind":"account","path":"creator"}]}},{"name":"member","writable":true},{"name":"milestone","writable":true},{"name":"vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"team"}]}},{"name":"contributor_token_account","docs":["The agent's USDC token account."],"writable":true},{"name":"payment_record","writable":true,"pda":{"seeds":[{"kind":"const","value":[114,101,99,101,105,112,116]},{"kind":"account","path":"team"},{"kind":"account","path":"team.payment_count","account":"Team"}]}},{"name":"authority","relations":["team"]},{"name":"token_program","address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"create_milestone","docs":["Create a milestone (deliverable) that must be completed before payment.","Example: \"Complete API integration task\" or \"Deliver research report batch #12\"."],"discriminator":[239,58,201,28,40,186,173,48],"accounts":[{"name":"creator","writable":true,"signer":true},{"name":"team","pda":{"seeds":[{"kind":"const","value":[116,101,97,109]},{"kind":"account","path":"creator"}]}},{"name":"member"},{"name":"milestone","writable":true,"pda":{"seeds":[{"kind":"const","value":[109,105,108,101,115,116,111,110,101]},{"kind":"account","path":"team"},{"kind":"account","path":"member"},{"kind":"account","path":"team.payment_count","account":"Team"}]}},{"name":"authority","relations":["team"]},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"description","type":"string"},{"name":"amount","type":"u64"},{"name":"deadline","type":"i64"}]},{"name":"create_team","docs":["Initialize a vault. The creator becomes the authority.","`team_name` is a human-readable label (e.g., \"My AI Agent Swarm\")."],"discriminator":[122,161,98,67,178,128,116,113],"accounts":[{"name":"creator","writable":true,"signer":true},{"name":"team","writable":true,"pda":{"seeds":[{"kind":"const","value":[116,101,97,109]},{"kind":"account","path":"creator"}]}},{"name":"mint","docs":["The USDC (or any SPL token) mint for this team's treasury."]},{"name":"vault","docs":["Vault is a token account owned by the team PDA."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"team"}]}},{"name":"token_program","address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"name":"system_program","address":"11111111111111111111111111111111"},{"name":"rent","address":"SysvarRent111111111111111111111111111111111"}],"args":[{"name":"team_name","type":"string"}]},{"name":"deactivate_member","docs":["Kill switch — deactivate an agent (does not delete — preserves history)."],"discriminator":[168,37,229,241,194,125,170,126],"accounts":[{"name":"creator","signer":true},{"name":"team","pda":{"seeds":[{"kind":"const","value":[116,101,97,109]},{"kind":"account","path":"creator"}]}},{"name":"member","writable":true},{"name":"authority","relations":["team"]}],"args":[]},{"name":"direct_pay","docs":["Direct payment without a milestone (for API calls, task payments, etc.).","Vault admin pays an agent directly from the vault."],"discriminator":[11,101,61,114,142,27,83,12],"accounts":[{"name":"creator","writable":true,"signer":true},{"name":"team","writable":true,"pda":{"seeds":[{"kind":"const","value":[116,101,97,109]},{"kind":"account","path":"creator"}]}},{"name":"member","writable":true},{"name":"vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"team"}]}},{"name":"contributor_token_account","writable":true},{"name":"payment_record","writable":true,"pda":{"seeds":[{"kind":"const","value":[114,101,99,101,105,112,116]},{"kind":"account","path":"team"},{"kind":"account","path":"team.payment_count","account":"Team"}]}},{"name":"authority","relations":["team"]},{"name":"token_program","address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"amount","type":"u64"},{"name":"memo","type":"string"}]},{"name":"fund_vault","docs":["Fund the agent vault treasury with USDC."],"discriminator":[26,33,207,242,119,108,134,73],"accounts":[{"name":"creator","writable":true,"signer":true},{"name":"team","pda":{"seeds":[{"kind":"const","value":[116,101,97,109]},{"kind":"account","path":"creator"}]}},{"name":"vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116]},{"kind":"account","path":"team"}]}},{"name":"creator_token_account","writable":true},{"name":"authority","relations":["team"]},{"name":"token_program","address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"}],"args":[{"name":"amount","type":"u64"}]},{"name":"submit_deliverable","docs":["Agent submits deliverable proof (a URI to the work)."],"discriminator":[38,137,64,44,237,11,125,101],"accounts":[{"name":"contributor","signer":true},{"name":"member"},{"name":"milestone","writable":true}],"args":[{"name":"proof_uri","type":"string"}]}],"accounts":[{"name":"Member","discriminator":[54,19,162,21,29,166,17,198]},{"name":"Milestone","discriminator":[38,210,239,177,85,184,10,44]},{"name":"PaymentRecord","discriminator":[202,168,56,249,127,226,86,226]},{"name":"Team","discriminator":[140,218,177,140,193,241,199,106]}],"errors":[{"code":6000,"name":"Unauthorized","msg":"Unauthorized"},{"code":6001,"name":"NameTooLong","msg":"Team name exceeds 64 characters"},{"code":6002,"name":"RoleTooLong","msg":"Role exceeds 32 characters"},{"code":6003,"name":"DescriptionTooLong","msg":"Description exceeds 128 characters"},{"code":6004,"name":"ProofTooLong","msg":"Proof URI exceeds 256 characters"},{"code":6005,"name":"TeamFull","msg":"Team is full (max 15 members)"},{"code":6006,"name":"ZeroAmount","msg":"Amount must be greater than zero"},{"code":6007,"name":"MemberNotInTeam","msg":"Member is not part of this team"},{"code":6008,"name":"MemberInactive","msg":"Member is inactive"},{"code":6009,"name":"MilestoneNotPending","msg":"Milestone is not in pending status"},{"code":6010,"name":"MilestoneNotSubmitted","msg":"Milestone is not in submitted status"},{"code":6011,"name":"MilestoneMismatch","msg":"Milestone does not match the expected member/team"}],"types":[{"name":"Member","type":{"kind":"struct","fields":[{"name":"team","type":"pubkey"},{"name":"wallet","type":"pubkey"},{"name":"role","type":"string"},{"name":"rate_per_delivery","type":"u64"},{"name":"total_earned","type":"u64"},{"name":"deliveries_completed","type":"u64"},{"name":"is_active","type":"bool"},{"name":"bump","type":"u8"}]}},{"name":"Milestone","type":{"kind":"struct","fields":[{"name":"team","type":"pubkey"},{"name":"member","type":"pubkey"},{"name":"description","type":"string"},{"name":"amount","type":"u64"},{"name":"deadline","type":"i64"},{"name":"status","type":{"defined":{"name":"MilestoneStatus"}}},{"name":"proof_uri","type":"string"},{"name":"created_at","type":"i64"},{"name":"completed_at","type":"i64"},{"name":"bump","type":"u8"}]}},{"name":"MilestoneStatus","type":{"kind":"enum","variants":[{"name":"Pending"},{"name":"Submitted"},{"name":"Approved"},{"name":"Rejected"}]}},{"name":"PaymentRecord","type":{"kind":"struct","fields":[{"name":"team","type":"pubkey"},{"name":"member","type":"pubkey"},{"name":"milestone","type":"pubkey"},{"name":"recipient","type":"pubkey"},{"name":"amount","type":"u64"},{"name":"timestamp","type":"i64"},{"name":"memo","type":"string"},{"name":"bump","type":"u8"}]}},{"name":"Team","type":{"kind":"struct","fields":[{"name":"authority","type":"pubkey"},{"name":"name","type":"string"},{"name":"mint","type":"pubkey"},{"name":"vault","type":"pubkey"},{"name":"member_count","type":"u8"},{"name":"total_disbursed","type":"u64"},{"name":"payment_count","type":"u64"},{"name":"bump","type":"u8"},{"name":"vault_bump","type":"u8"}]}}]}