Start from a skill
Turn a SKILL.md or an MCP URL into draft thirdfy-app.json manifests, then edit and submit them.
If your protocol already has a SKILL.md or a remote MCP server, you do not need to write a manifest from scratch. Give Thirdfy the skill text, the skill's URL or your MCP URL, and it returns drafts. You edit them and submit them like any manifest, so every normal check and review still runs.
Drafting stores nothing, certifies nothing and lists nothing. You must be signed in.
What you send
skillMarkdown(the text) orskillUrl;- optionally
mcpUrl, when the skill does not name your server; - optionally
appId; - optionally
contracts: the addresses you confirm, as{ "<chainId>": { "<alias>": "0x…" } }.
What comes back
drafts: a list of draft manifests, each markedreadsorwrites, with its lint result;needsYou: what you must still decide;sources: the MCP URL and the contract ABIs it used.
Reads
Thirdfy asks your MCP server for its tool list, with no Thirdfy key, and makes a draft read for each tool that only reads. These tools go to needsYou and are held back:
- tools marked as changing state;
- tools that run code or call whatever their input names (for example
execute,direct_api_call, or inputs such ascode,sql,endpoint_pathorabi), because a listed read does one fixed thing; - internal tools of the server.
If the skill names several URLs, the MCP server is the best match in this order: an endpoint path (/mcp, /sse, /mcp/v1, /streamable-http), the URL after mcp add, then a bare mcp. host. Package, code and docs pages never count.
Writes
Writes are drafted only for contracts you confirm in contracts.
Addresses never come from the skill text. A skill may mention many addresses; none reaches a draft unless you gave it. Thirdfy then gets the contract's verified ABI from a block explorer, falling back to Sourcify. A contract with no verified source drafts nothing. A proxy is read through its implementation, and the write still calls the proxy address.
Functions named like an agent write (deposit, withdraw, redeem, swap, supply and similar) become draft pinned_call writes. Recipient-like inputs are bound to $self and pinned; the other inputs become params. These are left out, as the write rules require: multicall and execute, bytes and fixed bytesN inputs, and arrays.
What you still set
The drafts are a start. needsYou lists what only you can decide:
- the role of each param, and the approval;
domain,riskandmaxAmountUsd;- the
exitof a write that opens a position; outputSchemaandfixtureParams.
Some writes cannot be drafted, for example a function on a proxy whose implementation Sourcify cannot resolve. Write those by hand with the reference.
Safety
The skill is untrusted text. Thirdfy reads only its name, description, title and MCP URLs, strips control and bidirectional characters, and ignores any instructions in it. A skill or MCP URL on a private network address is refused.
Limits: 200 KB per skill, 10 contracts, 50 MCP tools, 8 writes per contract.
Next
Edit the drafts, then submit them on the new submission screen. See Integrate your protocol.