The goal is to define a way to expose the metadata of available tools to agents.

Metadata structure

{
"name": "sell-tx-omen",
"kwargs": [
	{
		"identifier": "sender",
		"type": "hexAddress"
	},
		{
		"identifier": "recipient",
		"type": "hexAddress"
	},
  {
		"identifier": "amount",
		"type": "int"
	}
	]
}

Options for storing metadata

  1. Add tool kwargs and types to agent’s description on IPFS

  2. Add a new field to metadata on IPFS

    1. See excerpt from IPFS hash of agent 3 from https://aimechs.autonolas.network/registryhttps://gateway.autonolas.tech/ipfs/f01701220e0717959deed4679be5b7aa779da7a0c57d5d1d8d5182cdfa304a24c65d23d10

    {"name":"Autonolas Mech III", "description":"The mech executes AI tasks requested on-chain and delivers the results to the requester.", "inputFormat":"ipfs-v0.1", "outputFormat":"ipfs-v0.1", "image":"tbd", **"tools":["claude-prediction-offline","claude-prediction-online","deepmind-optimization","deepmind-optimization-strong","openai-gpt-3.5-turbo","openai-gpt-4","openai-text-davinci-002","openai-text-davinci-003","prediction-offline","prediction-offline-sme","prediction-online","prediction-online-sme","stabilityai-stable-diffusion-512-v2-1","stabilityai-stable-diffusion-768-v2-1","stabilityai-stable-diffusion-v1-5","stabilityai-stable-diffusion-xl-beta-v2-2-2","prediction-request-rag","prediction-request-reasoning","native_transfer","prediction-online-lite","claude-prediction-online-lite","prediction-online-sme-lite","prediction-request-reasoning-lite","prediction-request-reasoning-claude-lite"]}**

     - In the tools part, we could have the metadata structure mentioned earlier, with kwargs and types.
    
    1. Derive the agent’s kwargs from the code uploaded to IPFS