Is this a valid Tichu play?
JavaScript (ES6),  274  273 bytes
Takes input as (a)(b), where \$a\$ and \$b\$ are arrays of integers with:

\$1\$ = dog
\$3\$ = Mah Jong
\$4..16\$ = 2 ... Ace
\$18\$ = dragon
\$19\$ = phoenix

Returns false for valid or true for invalid.
a=&gt;b=&gt;!(L='length',[A,B]=(g=a=&gt;(h=n=&gt;--n?[i=1,2,3,'(20*)3|30*2','1{5,}','22+',4].some(p=&gt;m=o.join``.match(`9(0*)(${p})0*$`,i++),a.map(x=&gt;o[x-19?x:x=n]=-~o[x],o=[...9e16+'']))?[i,m[1][L]+(m[3]||[])[L]]:h(n):[])(18))(a),[C,D]=g(b),a+a?A-C?C&gt;7|+b&gt;a:a[L]==b[L]&amp;D&gt;B|A&lt;3&amp;b==18:C)

Try it online!
How?
To evaluate a hand, we build an array o[] made of a leading \$9\$, initially followed by 16 zeros:
//       D  -  1  2  3  4  5  6  7  8  9  T  J  Q  K  A
o = [ 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];

For each card rank in the hand, the corresponding slot in o[] is incremented. Once joined back to a string, we can apply the following regular expressions to detect each type of hand:
 hand        | pattern     | full regex              | example
-------------+-------------+-------------------------+-------------------
 single      | 1           | /9(0*)(1)0*$/           | 90000100000000000
 pair        | 2           | /9(0*)(2)0*$/           | 90000002000000000
 3-of-a-kind | 3           | /9(0*)(3)0*$/           | 90003000000000000
 full house  | (20*)3|30*2 | /9(0*)((20*)3|30*2)0*$/ | 90020000030000000
 straight 5+ | 1{5,}       | /9(0*)(1{5,})0*$/       | 90000111110000000
 tractor     | 22+         | /9(0*)(22+)0*$/         | 90000000000022200
 bomb        | 4           | /9(0*)(4)0*$/           | 90000000000000004

If the hand does not trigger any of these regular expressions, it's invalid.
The value of the hand is given by the number of zeros just after the leading \$9\$ (the higher, the better). A special case is a full house where the rank of the triple is higher than that of the pair, in which case we need to add the length of the (20*) pattern.
The phoenix (i.e. the wildcard) is simply replaced with each possible card rank, starting with the highest one, until a match is detected.