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) or skillUrl;
  • 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 marked reads or writes, 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 as code, sql, endpoint_path or abi), 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, risk and maxAmountUsd;
  • the exit of a write that opens a position;
  • outputSchema and fixtureParams.

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.